Skip to main content

Java Übung – So greifst du auf Variablen zu

In dieser Java Übung soll der Unterschied zwischen Instanz- und Klassenvariablen demonstriert werden.
Außerdem werde ich dir den Zugriff über Methoden zeigen.

  1. Lege dazu eine Klasse Variablenzugriff an.
    • Deklariere eine Instanzvariable, namens „zaehlerInstanz“.
      Der Wertebereich dieser Variablen soll eine ganze Zahl sein.
    • Deklariere eine zweite Variable.
      Diese soll allerdings eine Klassenvariable sein.
      Nenne diese „zaehlerKlasse“.
      Der Datentyp soll ebenfalls dem einer ganzen Zahl entsprechen.
  2. Im parameterlosen Konstruktor der Klasse „Variablenzugriff“ sollen beide Variablen um eins erhöht werden.

  3. Außerdem sollen in der Klasse drei Methoden implementiert werden.
    • Die Instanzmethode „zaehleInstanz“ soll den Wert der Instanzvariable zurückgeben.
    • Die zweite Methode ist eine statische Methode, namens „zaehleKlasse“.
      Diese gibt dann den Wert der Klassenvariable zurück.
    • Die dritte Methode ist die main-Methode.
      Innerhalb der main-Methode werden zwei Objekte der Klasse erzeugt.
      Nenne diese Objekte „zaehlerEins“ und „zaehlerZwei“.
      An diesen Objekten kannst du dann die Instanzmethode „zaehleInstanz“ aufrufen.
    • Die main-Methode führt außerdem die zweite Methode „zaehleKlasse“ aus.
    • Lass dir die Rückgabewerte der Methoden auf der Konsole anzeigen.
  • Welchen Rückgabewert hat die Instanzvariable für das erste Objekt?
  • Welchen Rückgabewert hat die Instanzvariable für das zweite Objekt?
  • Welchen Rückgabewerte hat die Klassenvariable nachdem beide Objekte erzeugt wurden?

So sieht die Lösung zu dieser Java Übung aus.

Als Erstes legst du die Klasse an.
Achte beim Klassennamen auf die Namenskonvention. (VariablenZugriff)

Innerhalb der Klasse legst du dann die beiden Variablen und den parameterlosen Konstruktor an.

Und so sieht der Code aus.

public class VariablenZugriff {
int zaehlerInstanz; //Objektvariable vom Datentyp Integer
static int zaehlerKlasse; // Klassenvariable vom Datentyp Integer

public VariablenZugriff(){ //parameterloser Konstruktor
 zaehlerInstanz=zaehlerInstanz+1; //Instanzvariable wird um eins erhöht
 zaehlerKlasse=zaehlerKlasse+1; //Klassenvariable wird um eins erhöht
}

}

Als nächstes kannst du die Instanzmethode „zaehleInstanz“ und „zaehleKlasse“ implementieren.

public class VariablenZugriff {
int zaehlerInstanz; //Objektvariable vom Datentyp Integer
static int zaehlerKlasse; // Klassenvariable vom Datentyp Integer

int zaehleInstanz(){ //Objektmethode mit Rückgabetyp Integer
 return zaehlerInstanz; //Rückgabe der Objektvariable
}

static int zaehleKlasse(){ //Klassenmethode Rückgabetyp Integer
 return zaehlerKlasse; //Rückgabe der Klassenvariable
}

public VariablenZugriff(){//parameterloser Konstruktor
 zaehlerInstanz=zaehlerInstanz+1;//Instanzvariable wird um eins erhöht
 zaehlerKlasse=zaehlerKlasse+1;//statische Variable wird um eins erhöht
}
}

Im nächsten Schritt implementierst du noch die main-Methode.
Dann erzeugst du beide Objekte.
Innerhalb der Klammern der System.out.println()-Anweisung findet der jeweilige Methodenaufruf statt.

public class VariablenZugriff {
int zaehlerInstanz; //Instanzvariable vom Datentypen Integer
static int zaehlerKlasse; // statische Variable vom Datentyp Integer

int zaehleInstanz(){ //Objektmethode mit Rückgabetyp Integer
 return zaehlerInstanz; //Rückgabe der Objektvariable
}

static int zaehleKlasse(){ //Klassenmethode Rückgabetyp Integer
 return zaehlerKlasse; //Rückgabe der Klassenvariable
}

public VariablenZugriff(){//parameterloser Konstruktor
 zaehlerInstanz=zaehlerInstanz+1;//Instanzvariable wird um eins erhöht
 zaehlerKlasse=zaehlerKlasse+1;//statische Variable wird um eins erhöht
}

public static void main(String[] args) {
 VariablenZugriff zaehlerEins = new VariablenZugriff();//Objekt zaehlerEins wird erzeugt
 VariablenZugriff zaehlerZwei = new VariablenZugriff();//Objekt zaehlerZwei wird angelegt
 
 System.out.println(zaehlerEins.zaehleInstanz());//Konsolenausgabe für Objekt zaehlerEins
 System.out.println(zaehlerZwei.zaehleInstanz());//Konsolenausgabe für Objekt zaehlerZwei
}
}

Jetzt kannst du die ersten beiden Fragen zur Aufgabe beantworten.
Die Instanzvariablen für die Objekte „zaehlerEins“ und „zaehlerZwei“ ist jeweils Eins.
Kommen wir zur statischen Variable.

public class VariablenZugriff {
int zaehlerInstanz; //Instanzvariable vom Datentypen Integer
static int zaehlerKlasse; // statische Variable vom Datentyp Integer

int zaehleInstanz(){ //Objektmethode mit Rückgabetyp Integer
 return zaehlerInstanz; //Rückgabe der Objektvariable
}

static int zaehleKlasse(){ //Klassenmethode Rückgabetyp Integer
 return zaehlerKlasse; //Rückgabe der Klassenvariable
}

public VariablenZugriff(){//parameterloser Konstruktor
 zaehlerInstanz=zaehlerInstanz+1;//Instanzvariable wird um eins erhöht
 zaehlerKlasse=zaehlerKlasse+1;//statische Variable wird um eins erhöht
}

public static void main(String[] args) {
 VariablenZugriff zaehlerEins = new VariablenZugriff();//Objekt zaehlerEins wird erzeugt
 VariablenZugriff zaehlerZwei = new VariablenZugriff();//Objekt zaehlerZwei wird angelegt
 
 System.out.println(zaehlerEins.zaehleInstanz());//Konsolenausgabe für Objekt zaehlerEins
 System.out.println(zaehlerZwei.zaehleInstanz());//Konsolenausgabe für Objekt zaehlerZwei
 System.out.println(zaehleKlasse());//Konsolenausgabe der statischen Variablen
}
}

Die statische Variable hat den Wert zwei.

Worin besteht der Unterschied zwischen den Variablen?
Du hast innerhalb der main Methode zwei Objekte angelegt.
Du hast somit zweimal den parameterlosen Konstruktor aufgerufen.
Im Konstruktor wurde somit zweimal der Wert der Instanzvariable um eins erhöht.

Doch der Wert war für beide Instanzen jeweils eins?

Warum?
Jedes Objekt hat seine eigene Instanzvariable.
Das bedeutet, dass die Variable „zaehlerInstanz“ für das Objekt „zaehlerEins“ eine ganz andere ist, als für „zaehlerZwei“.

Du kannst somit für jedes Objekt die Instanzvariable unterschiedlich belegen.
Jede Instanzvariable kann je nach Objekt einen unterschiedlichen Wert zugewiesen bekommen.
Somit ist es möglich zum Beispiel Menschobjekte mit unterschiedlichen Größen, Gewichten usw. anzulegen.

Bei den Klassenvariablen funktioniert dies nicht.
Du hast gesehen, dass wir diese Variable im Konstruktor erhöht haben.
Und diese Variable beträgt zwei.

Falls du jetzt noch mehr Objekte anlegst, wird der Konstruktor öfter aufgerufen.
Dadurch könnte der Wert der Klassenvariable auf drei, vier usw. steigen.
Somit wird klar, dass Klassenvariablen nicht objektspezifisch sind.
Klassenvariablen stehen allen Objekten zur Verfügung.
Die vielseitigen Möglichkeiten für den Einsatz von Klassenvariablen habe ich in einem Beitrag beschrieben.

Falls du jetzt Lust hast mehr über Variablen zu erfahren, dann klicke hier.


Ähnliche Beiträge

Hier sind ein paar richtig nette Features, die dich beim Java lernen unterstützen

Java lernen Eclipse

Was ist das Wichtigste beim Einstieg in ein neues Wissensgebiet? Nein, kein gutes Sachbuch oder ein besonders guter Lehrer. Es ist Spaß. Beim Java Lernen brauchst du Spaß. Es gibt Lehrer, welche ihren Stoff so vermitteln, dass Lernen Spaß bereitet. Aber die Grundvoraussetzung ist und bleibt der Spaß. Und nichts ist so spaßhemmend wie Langeweile […]

Über das kurze Leben einer lokalen Variablen

Java Variable lokal

Lass uns über die Lebensdauer einer lokalen Variablen sprechen. Warum ausgerechnet die Lebensdauer? Alle Java Variablen, unterscheiden sich in folgenden Punkten: wo diese deklariert werden können, wie du diese aufrufen kannst, welchen Bereich diese abdecken, und Ihre Lebensdauer Und eine lokale Java Variable hat eine relativ kurze Lebensdauer. Schauen wir uns zuerst Klassen- und Instanzvariablen […]

Java Übung 31: Speichere deine Würfe im Array

Java Übung Array Würfelspiel

In dieser Java Übung soll ein Würfelspiel simuliert werden. Lege eine Klasse namens, Würfelspiel an. Diese Klasse enthält eine statische Methode, namens würfeln(). Diese Methode erwartet einen Parameter vom Datentyp Integer, namens „anzahlWuerfe“. Diese Variable/Parameter repräsentiert die Anzahl der Würfe. Nachdem der Methode die Anzahl der Würfe übergeben wurde, soll die Methode Zufallszahlen zwischen 1 […]

So kannst du gelöschte Java Projekte oder Dateien in Eclipse wieder herstellen

Wahrscheinlich passiert es jedem einmal, dass man versehentlich Dateien löscht. Und dann? Die Wut ist riesig, weil man ja alles nochmal schreiben muss. In Eclipse hast du die Möglichkeit sämtliche Dateien wieder herzustellen. In diesem Beitrag möchte ich dir demonstrieren, wie du gelöschte Java Klassen, Dateien, Projekte oder Packages wieder herstellen kannst.

So nutzt du Methoden aus der Java String Klasse

Java Strings Methoden

In einen der letzten Beiträge haben wir darüber gesprochen, dass Java Strings – Objekte sind. Dass Strings in allen Programmen äußerst häufig vorkommen Und dass sich deshalb Referenzvariablen String-Objekte im String Pool teilen. Das Konzept hinter dem String-Pool ist die Teilung der Ressourcen. Und das bedeutet: Weniger Objekte – mehr Speicher Mehr Speicher – bessere […]

Eine Java Konsoleneingabe machst du über den Scanner

Es wird Zeit für die erste Java Konsoleneingabe. Und diese Eingaben machst du über den Java Scanner. Was ist das? Der Scanner ist eine vorgefertigte Java Klasse, welche Java mit seiner API anbietet. Das heißt du musst nichts selbst erschaffen. Du musst nur wissen, wie du darauf zugreifst. Erst einmal musst du einen Scanner anlegen. […]

So lassen sich aus Java Klassen Instanzen erstellen

Java Klassen Instanzen erstellen

Lass uns jetzt aus den Java Klassen heraus Objekte anlegen. Im Einführungsbeispiel hast du bereits gelernt, wie du: Instanzvariablen bzw. Attribute anlegst Wie du aus einer normalen Java Klasse eine Programmstart Klasse machst In diesem Artikel erfährst du: Was Objekte bzw. Instanzen sind. Wie sich Objekte zusammensetzen. Wo und wie du Instanzen aus Java Klassen […]

So kannst du Java Methoden überladen

Java Methoden überladen

Im Mittelalter war es üblich, dass Könige oder Adlige Briefe durch ein Siegel verschlossen. Das Siegel hatte die Aufgabe den Inhalt des Briefes vor dem gewaltsamen Öffnen zu schützen. Außerdem hatte das Siegel die Aufgabe einen Eigentumsnachweis sicher zu stellen. Und jeder, welcher das Siegel des Königs sah, wusste: „Das königliche Siegel – Oh ein […]

So lassen sich Java Strings in char zerlegen

Java Strings zerlegen char

Java Strings sind Zeichenketten. Und diese Zeichenketten lassen sich aufsplitten und in ihre Einzelteile zerlegen. Ich möchte dir in diesem Beitrag Möglichkeiten vorstellen, wie du Strings in Character-Datentypen zerlegen, extrahieren und die Einzelteile in Arrays speichern kannst.