Variable: Unterschied zwischen den Versionen

Aus EINI
Wechseln zu: Navigation, Suche
(Variablen in Java)
Zeile 5: Zeile 5:
 
= Variablen in Java =
 
= Variablen in Java =
  
In Java gibt es zwei Formen von Variablen: Variablen mit [[Primitiver Datentyp|primitiven Datentyp]] und Variablen mit Objektdatentyp.
+
In Java gibt es zwei Formen von Variablen: Variablen mit [[Primitiver Datentyp|primitivem Datentyp]] und Variablen mit [[Objekt|Objektdatentyp]].
  
Variablen mit primitven Datentyp repräsentieren direkten Zugriff auf einen Speicherbereich der Größe des primitiven Datentyps. Diese Variablen werden als Parameter in einem Methodenaufruf ebenso ausschließlich über [[Call by Value]] übergeben, das heißt, der Speicherbereich selbst wird nicht an den Methodenaufruf übergeben, sondern dessen Inhalt.
+
Variablen mit primitivem Datentyp repräsentieren einen direkten Zugriff auf einen Speicherbereich der Größe des primitiven Datentyps. Diese Variablen werden als Parameter in einem Methodenaufruf ausschließlich über [[Call by Value]] übergeben. Das heißt der Speicherbereich selbst wird nicht an den Methodenaufruf übergeben, sondern dessen Inhalt.
  
Variablen mit einem Objektdatentyp repräsentieren eine Referenz auf ein Objekt, also nur einen virtuellen Zeiger auf einen Speicherbereich. Wird eine Funktion mit einem Objekt als Parameter aufgerufen wird entsprechend nur die Referenz des Objektes als Parameter übergeben. Entsprechend haben Änderungen an einem Objekt von jedem Ort im Programmcode Einfluss auf das Objekt selbst. Diese Funktionalität wird [[Call by Reference]] genannt.
+
Variablen mit einem Objektdatentyp repräsentieren eine Referenz auf ein Objekt, also lediglich einen virtuellen Zeiger auf einen Speicherbereich. Wird eine Funktion mit einem Objekt als Parameter aufgerufen, wird entsprechend nur die Referenz auf das Objekt als Parameter übergeben. Das bedeutet wiederum, dass Änderungen an einem Objekt von jedem Ort im Programmcode Einfluss auf das Objekt selbst haben. Diese Funktionalität wird [[Call by Reference]] genannt.
  
Eine weitere Kategorisierung von Variablen findet in ihrer Verwendung statt:
+
Eine weitere Kategorisierung von Variablen findet anhand ihrer Verwendung statt:
  
 
#Variablen können als lokale Variable in einem Funktions-/Methodenaufruf verwendet werden.
 
#Variablen können als lokale Variable in einem Funktions-/Methodenaufruf verwendet werden.

Version vom 7. Februar 2016, 18:53 Uhr

Eine Variable repräsentiert einen Bereich im Speicher des Rechners um Zugang zu diesem Speicher zu erhalten und diesen manipulieren zu können.

Variablen werden in den meisten (streng getypten) Programmiersprachen mit einem Datentyp und einem Namen versehen.

Variablen in Java

In Java gibt es zwei Formen von Variablen: Variablen mit primitivem Datentyp und Variablen mit Objektdatentyp.

Variablen mit primitivem Datentyp repräsentieren einen direkten Zugriff auf einen Speicherbereich der Größe des primitiven Datentyps. Diese Variablen werden als Parameter in einem Methodenaufruf ausschließlich über Call by Value übergeben. Das heißt der Speicherbereich selbst wird nicht an den Methodenaufruf übergeben, sondern dessen Inhalt.

Variablen mit einem Objektdatentyp repräsentieren eine Referenz auf ein Objekt, also lediglich einen virtuellen Zeiger auf einen Speicherbereich. Wird eine Funktion mit einem Objekt als Parameter aufgerufen, wird entsprechend nur die Referenz auf das Objekt als Parameter übergeben. Das bedeutet wiederum, dass Änderungen an einem Objekt von jedem Ort im Programmcode Einfluss auf das Objekt selbst haben. Diese Funktionalität wird Call by Reference genannt.

Eine weitere Kategorisierung von Variablen findet anhand ihrer Verwendung statt:

  1. Variablen können als lokale Variable in einem Funktions-/Methodenaufruf verwendet werden.
  2. Variablen können als Attribut eines Objektes verwendet werden.
  3. Variablen können als statisches Klassenattribut verwendet werden.

Deklaration

Durch die Deklaration einer Variablen wird der Bedarf an Speicher in einem Programm signalisiert und dieser reserviert. Um eine Variable zu deklarierenm muss zunächst der Typ angegeben werden. Danach wird die Variable benannt.

Typ Variablenname;

Beispiel

int number;

Dies deklariert eine Variable vom Typ int und dem Namen number. Entsprechend werden 32 Bit Speicher reserviert, welche nun über den Namen der Variablen zur Verfügung stehen und stets als eine vorzeichenbehaftete Ganzzahl interpretiert werden.

Initialisierung

Bevor man den Wert einer Variablen verwenden kann, muss sie zuerst irgendwo im Programm mit einem Wert initialisiert werden. Dies geschieht durch eine Zuweisung. Einer Variablen kann insbesondere auch bei Deklaration ein Wert zugewiesen werden.

Typ Variablenname = Initialwert;

Variablenname = Initialwert;

Beispiele

double value = 5.0;

Dies deklariert eine Variable vom Typ double und dem Namen value. Sie wird mit dem Wert 5.0 initialisiert.

int number;
[...]
number = 42;

Dies deklariert erneut eine Variable vom Typ int und dem Namen number. Sie wird erst in der nächsten Zeile mit dem Wert 42 initialisiert. Zwischen Deklaration und Initialisierung darf dabei beliebiger anderer Code ausgeführt werden, solange dieser die Variable number dabei nicht verwendet.

Wird eine Variable als Attribut verwendet, so wird sie bei Instanziierung des Objektes mit 0, bei numerischen Variablen, oder null, bei Objektvariablen, initialisiert. Dieses Verhalten kann man durch den Konstruktor oder durch Angabe eines Standardwertes bei der Deklaration als Attribut verändern.

Verwendung

Lokale Variable

Eine Variable wird lokal genannt, wenn sie innerhalb eines Methodenaufrufs deklariert wird. Dies gilt auch für die Parametervariablen einer Methode.

Beispiel

public static void main(String[] args){
    int value = 3;
    int iterations = 5;
    for(int i = 0; i < iterations; i++){
        value += value;
    }
    System.out.println(value);
}

In diesem Beispiel sind die Variablen args, value, iterations und i lokale Variablen.

Attributvariable

Eine Variable wird Attribut genannt, wenn sie innerhalb einer Klasse deklariert wird.

Beispiel

public class Cuboid {
    private double width;
    private double height;
    private double length;
    [...]
    public void setWidth(double w){
        this.width = w;
    }
    [...]
}

In diesem Beispiel sind die Variablen width, height und length Attributvariablen, die Variable w ist eine lokale Variable der Methode setWidth.

Statische Klassenvariable

Eine Variable wird Klassenvariable genannt, wenn sie innerhalb einer Klasse statisch deklariert wird. Dies ist meistens bei Konstanten der Fall.

Beispiel

public class Sphere {

    public static final double PI = 3.1415;

    [...]
}


Zuweisung

Eine Zuweisung weist einer Variablen einen neuen Wert zu. Es wird also der Wert des Speichers, den die Variable repräsentiert, direkt manipuliert. Eine Zuweisung ist entsprechend die einzige Möglichkeit einen Speicherbereich zu manipulieren.

Einer Variablen kann nur ein Wert zugewiesen werden, wenn sie zuvor deklariert wurde. Wurde eine Variable nicht deklariert, kann ihr Name während der Zuweisung zu keinem Speicherbereich aufgelöst werden, selbst wenn die Variable später deklariert wird.

Eine Zuweisung geschieht durch Verwendung eines einzelnen = Symboles zwischen dem Namen der Variablen und dem neuen Wert. Dabei wird der Ausdruck rechts vom = immer zuerst ausgewertet, bevor er der Variablen links vom = zugeweisen wird.

Da eine Zuweisung eine Anweisung ist, kann sie auch nur dort verwendet werden, wo eine auszuführende Anweisung verwendet werden kann. (In Methoden oder Konstruktoren)

Dabei ist zu beachten, dass der Wert rechts vom = den gleichen Typ haben muss, wie die Variable, die links vom = steht.

Variable = Wert;

Beispiele

int value;
value = 0;
int value = 0;
value = 0;
int value = 2;
int amount = 3 * value;
int value = 2;
value = value + 3;