Hallo,
Aufgabe:
Gegeben sei eine Klasse Test, die eine Instanzvariable namens Scores als Feld von ints deklariert:
Welches der nachfolgenden Codefragmente würde, wenn es im Konstruktor der Klasse Test stünde,
die Instanzvariable Scores korrekt als ein Feld mit vier ints des Werts 0 initialisieren?
Begründen Sie für jede Antwortoption kurz, warum sie zutrifft oder nicht. (Mehrere Antworten
können richtig sein.)
Musterlösung:
Antworten b) und c) sind korrekt. Der Code in b) funktioniert, da Felder eingebauter Datentypen,
die als Instanzvariablen deklariert werden, automatisch bei der Konstruktion mit Null initialisiert
werden. (Dies gilt nicht für lokale Variablen innerhalb von Methoden!) Der Code in c) funktioniert,
aber die Schleife ist überflüssig – sie würde nur Sinn machen, wenn ein anderer Wert als Null zur
Initialisierung gefordert gewesen wäre. ...
Beispielcode:
Ausgabe:
Meine Frage:
In der Musterlösung heißt es, das Arrays als Instanz-Variablen automatisch mit 0 initialisiert werden, hingegen würde das aber bei lokalen Variablen nicht der Fall sein. Habe um dies zu testen das obige Beispiel erstellt und festgestellt das dem nicht so ist.
Ist der Hinweis zur Initialisierung lokaler Arrays falsch oder ist er anders zu verstehen?
Vg Erdal
Aufgabe:
Gegeben sei eine Klasse Test, die eine Instanzvariable namens Scores als Feld von ints deklariert:
Code:
int Scores[];
die Instanzvariable Scores korrekt als ein Feld mit vier ints des Werts 0 initialisieren?
Begründen Sie für jede Antwortoption kurz, warum sie zutrifft oder nicht. (Mehrere Antworten
können richtig sein.)
Code:
a) int Scores[] = {0,0,0,0};
b) Scores = new int[4];
c) Scores = new int[4]; for (int i = 0; i < 4; i++) Scores[i] = 0;
d) Scores = {0,0,0,0};
Musterlösung:
Antworten b) und c) sind korrekt. Der Code in b) funktioniert, da Felder eingebauter Datentypen,
die als Instanzvariablen deklariert werden, automatisch bei der Konstruktion mit Null initialisiert
werden. (Dies gilt nicht für lokale Variablen innerhalb von Methoden!) Der Code in c) funktioniert,
aber die Schleife ist überflüssig – sie würde nur Sinn machen, wenn ein anderer Wert als Null zur
Initialisierung gefordert gewesen wäre. ...
Beispielcode:
Java:
public class Example {
int Scores[];
public Example () {
Scores = new int[4];
}
public void printScoresLocal() {
int ScoresLocal[] = new int[4];
for (int i = 0; i < ScoresLocal.length; i++) {
System.out.println(ScoresLocal[i]);
}
}
public static void main(String[] args) {
Example s = new Example();
for (int i = 0; i < s.Scores.length; i++) {
System.out.println(s.Scores[i]);
}
System.out.println();
s.printScoresLocal();
}
}
Ausgabe:
Code:
0000
0000
Meine Frage:
In der Musterlösung heißt es, das Arrays als Instanz-Variablen automatisch mit 0 initialisiert werden, hingegen würde das aber bei lokalen Variablen nicht der Fall sein. Habe um dies zu testen das obige Beispiel erstellt und festgestellt das dem nicht so ist.
Ist der Hinweis zur Initialisierung lokaler Arrays falsch oder ist er anders zu verstehen?
Vg Erdal