Java lesson 3 - OOP - Variablen, Konstruktoren und Konvertierung

Welche Rolle spielen Variablen in einem Programm?

Um die Anweisungen eines Programms verarbeiten zu können, werden Variablen benötigt.
Die Zwischenergebnisse von Berechnungen werden dort zwischen gespeichert.
Die Variablen reservieren Teile des Speichern (Memory) im Computer
um die variablen Werte verarbeiten zu können.

Im Programm greift man auf den Speicherplatz mit Hilfe von Variablennamen zu.
Die Definition im Programm erfolgt durch den Namen und eines Datentypes.

Daher müssen mindestens 2 Vorraussetzungen gegeben sein, um Variablen im Programm nutzen zu können:

  • Eine Variable muss definiert sein, bevor Sie Daten aufnehmen kann
  • Einen Variable muss einen Wert enthalten, bevor Sie verwendet werden kann

Gültigkeitsbereich von lokalen Variablen

Neben den unterschiedlichsten Arten von Variablen, gibt es noch unterschiedliche Gültigkeitsbereiche.
Wenn eine Variable in einem Anweisungsblock einer Methode definiert wird,
bezeichnet man diese als lokale Variable und ist auch nur in diesem Block gültig.
Allgemein bezeichnet man dies als lokaler Gültigkeitsbereich.
Wenn man den Anweisungsblock mit der geschweiften Klammer } schließt, verliert auch die Variable ihren Gültigkeitsbereich.

Pro Anweisungsblock darf (und kann) es also nur eine Variable mit dem gleichen Namen geben.
Spätestens beim Versuch ein Programmcode zu compilen, wird der Compiler sagen,
dass dies nicht gültig ist und die Variablendefinition im Gültigkeitsberiech immer eindeutig sein muss.

Dazu ein kleines Beispiel:

Gültige Variablendefinition:


         {
                  String sMyName;
         }
                  //Anweisungsblock geschlossen und die Variable verliert ihre Gültigkeitsbereich

                  //Neuer Block Anfang
         {
                  String sMyName;
                  //Darf in diese Block neu definiert werden
         }


Ungültige Variablendefinition:

         {
                  String sMyName;
                  {
                          String sMyName;
                 }
         }

hier wird der Compiler eine unzulässige Variablendefinition anmeckern.
Denn die 2. Deklaration von sMyName befindet sich im gleichen Anweisungsblock und ist daher nicht zulässig.
Denn wenn Anweisungsblöcke geschachtelt werden,
wie im 2. Beispiel "Ungültige Variablendefinition" behält die 1. Variable ihre Gültigkeit im geschachtelten Anweisungsblock.
Und aus diesem Grund, kann es keine 2. Variable mit dem gleichen Namen geben.

Syntax der Variablendefinition

1. Type 2. Identifier;

Für eine Variablendefinition muss man mindestens den Type und den Namen (Identifier) angeben und das ganze im Java mit dem Semikolon abschließen.
Es besteht auch die Möglichkeit, mehrere Variablen des gleichen Typs in einer Anweisung zu definieren.
Hier werden die Namen einfach durch ein Komma getrennt.
Das kann den Code etwas übersichtlicher gestallten.

1. Type 2. Identifier, 3. Identifier, 4. Identifier;



Richtlinie bei der Benennung von Variablen
Es gibt bei der Namensgebung Sachen die man manchen muss, zum Beispiel keine Sonderzeichen oder Leerzeichen.
Das einzige was erlaubt ist, ist der Unterstrich _
Ansonsten gibt es allgemeine Regel die man einhalten sollte, aber nicht zwingend sind.
zum Beispiel, der erste Buchstabe sollte klein geschrieben sein. Oder man verbindet den Type mit dem Namen.

Wie in dem Beispiel ist der erste kleine Buchstabe der Variablen-Type:
String sMyString;
Int nMyInt;
double dMyDouble


der Variablenname sollte Aussagekräftig sein,
also am besten schon beschreiben, was er macht oder wozu er da ist.
String sMyFirstName;
String sMyLastName;


Hier kann man leicht erkennen, welchen Wert die Variable enthält.
Gerne darf der Name dabei auch mal länger sein, aber dafür aussagekräftig:
String sMyLastNameBeforeChangeToMarriedStatus;

Damit allerdings wird es schwierig,
in Programmen die Zuordnung zu finden oder zu verstehen:
String xyz;
String AAAAA;

Wertzuweisung und Initialisierung von Variablen

Über die Definition, oder anders gesagt,
über die Deklaration von Variablen haben wir nun schon ein paar Grundlagen kennen gelernt.
Nun müssen wir den Variabeln auch noch einen Wert zuweisen (initialisieren).

Selbstverständlich kann ich nur den Wert zu einer Variablen initialisieren,
der auch zu dem deklarieren Datentyp passt.

Also zunächst deklarieren wird eine String Variable:


String sMyName;



Und nun wird diese Initialisiert mit Hilfe des Zuweisungsoperator, dem Gleichheitszeichen:

sMyName = "Raimund Stachowiak";    //identifier = expression;

Diese Schritte der Deklaration und Initialisierung,
kann man auch in einer Zeile (einem Schritt) durchführen:

 String sMyName  = "Raimund Stachowiak";

Damit geben wir der Variablen einen Startwert mit,
der aber im Laufe des Programms geändert werden kann.
Im Gegenteil zu den lokalen Variabeln,
kann man bei statischen Variabeln den Wert im Programm nicht mehr ändern.
(die Werte werden bei der Initialisierung einmalig festgelegt)

Nun kann man auch bei der mehrfach Deklaration schon die Initialisierung machen:

Int iSum = 0; iAmout = 100; iBalance = 50;

Damit habe ich 3 gleiche Datentypen von Typ Integer definiert
und jedem seinen individuellen Startwert mitgegeben.

Typenkompatibilität und Typenkonversion

Wie im echten Leben, passt nicht jeder Typ zu einem andern Typ.
Bei der Programmierung in der Wertzuweisung,
Bei Variablen kann man auch nur den Wert des Datentyps zuweisen,
den sie selbst besitzt oder den sie auf Grund des Wertbereichs umfasst.

Kurz gesagt,
gibt es 3 verschiedene Möglichkeiten:
voll kompatibel, teilweise kompatibel, gar nicht kompatibel

Voll Kompatibel wäre:


Int = Int  oder boolean = boolean

Teilweise kompatibel:

Int = double;
String = Int;


wobei für die Konvertierung teilweise,
so genannte Wrapper-Klassen benötigt werden

Implizite Datentypkonversion vermeiden
Auch bei unterschiedlichen kompatiblen Datentypen macht es Sinn, eine explizite Datentypkonversion anzugeben.
Dadurch wird auch klar dargestellt, dass es sich um eine Konvertierung verschiedener Datentypen handelt.

Beispiel:

Double dMyVal = 1.0;
Int iMyInt= 8;

dMyVal = (int) iMyInt;



Comments

No comments yet.

Add Comment

* Required information
(never displayed)
 
Bold Italic Underline Strike Superscript Subscript Code PHP Quote Line Bullet Numeric Link Email Image Video
 
Smile Sad Huh Laugh Mad Tongue Crying Grin Wink Scared Cool Sleep Blush Unsure Shocked
 
1000
What is the sum of 1 + 2 + 3?
 
Enter answer:
Captcha
Refresh
 
Enter code:
 
Notify me of new comments via email.
 
Remember my form inputs on this computer.
 
I have read and understand the privacy policy. *
 
I have read and agree to the terms and conditions. *
 
 
Powered by Commentics