Verständnisproblem

Status
Nicht offen für weitere Antworten.

Angelika_25

Bekanntes Mitglied
Hallo ich habe folgenden Code:
Code:
public class Laufzeit1 {
   static byte i;
   static double [] [] f;
   public static void erzeuge (double [] [] f) {
     if (i==5)
       f=new double [i][i];
   }
   public static void main (String[] args) {
     while (f==null) {
         System.out.println(i++);
         erzeuge(f);
     }
   }
}
Das ist eine Aufgabe zum Verständnis vom Code. Ich habe auch die Lösung dazu, verstehe sie allerdings noch
nicht ganz.
Dieser Code führt zu einem fehlerhaftem Laufzeitverhalten...
Ich fange ja in der main-Methode an. f und i sind deklariert, aber noch nicht initialisiert. f hat dementsprechend noch eine null-Referenz und i noch keinen Wert.
Ich gehe also in die Schleife hinein, weil f noch eine null-Referenz hat (es wurde noch kein Objekt erzeugt). Dann muss ich i ausgeben und somit kommt schon meine erste Frage. Warum ist "System.out.println(i++)" kein Fehler? i hat doch noch überhaupt keinen Wert, wie soll ich es also ausgeben? Ich weiß, dass diese Zeile kein Fehler ist, deswegen verstehe ich es ja nicht.
Egal, danach geht es in die Methode erzeuge mit der Variable f.
Ich kann doch keine if-Anweisung mit i durchführen, wenn ich keinen Wert für i habe??

Ich würde mich freuen, wenn mir da jemand helfen könnte...

Liebe Grüße
 

tfa

Top Contributor
i ist ist vom Typ byte, ein sogenannter primitiver Datentyp (wie int, float, double, boolean etc.). Member-Variablen dieser Typen sind standardmäßif mit 0 (bzw. 0.0 nzw. false) initialisiert, auch wenn man das nicht explizit in seinen Code hinschreibt. Das ist anders als z.B. in C oder C++, wo uninitialisierte Variablen irgendwelche Zufallswerte haben.
 

hdi

Top Contributor
i ist schon initialisiert!

Man muss unterscheiden: Primitive Datentypen (char,boolean,byte,long,int,double)
werden standardmässig, wenn sie nicht als lokale Variable definiert sind sondern global,
mit einem Wert initialisiert.

Bei boolean ist das false
Bei alle anderen ist es "0".

Für String gilt das übrigens auch (Initial-Wert: "" also der leere String), obwohl sie
eigentlich nicht primitiv sind, aber Strings werden gesondert behandelt.

Bei nicht-primitiven Datentypen (Arrays, Listen, alle möglichen anderen Objekte)
wird keine initialisierung vorgenommen, also Startwert ist "null".
 

Angelika_25

Bekanntes Mitglied
Vielen Dank für die superschnelle Antwort!! Ja dann wird mir einiges klar, das wusste ich nicht, das ist ein super Tipp!!
Nochmal zu der Aufgabe:
Dann bekommt ja i irgend wann den Wert 5, dann wird ein Objekt erzeugt mit f. Aber das eigentliche f hat ja immernoch die null-Referenz, oder? Weil ja in der Methode nur mit der Kopie gearbeitet wird?
 

hdi

Top Contributor
[HIGHLIGHT="Java"]Aber das eigentliche f hat ja immernoch die null-Referenz, oder? Weil ja in der Methode nur mit der Kopie gearbeitet wird? [/HIGHLIGHT]

Richtig!
 

tfa

Top Contributor
Für String gilt das übrigens auch (Initial-Wert: "" also der leere String), obwohl sie
eigentlich nicht primitiv sind, aber Strings werden gesondert behandelt.
Das ist falsch. Uninitialisierte String-Variablen sind null, wie bei allen anderen Klassen auch.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Verständnisproblem bei Server/Client Java Basics - Anfänger-Themen 3
nonickatall Grundsätzliches Verständnisproblem des Aufbaus eines Programms Java Basics - Anfänger-Themen 19
X Verständnisproblem Call-By-Reference Java Basics - Anfänger-Themen 5
P JavaFX: Verständnisproblem bei ComboBox/ChoiceBox etc. Java Basics - Anfänger-Themen 9
T Verständnisproblem mit Assoziationen Java Basics - Anfänger-Themen 7
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
A Erste Schritte Verständnisproblem Java Basics - Anfänger-Themen 5
S Verständnisproblem Aufgabe Java Basics - Anfänger-Themen 9
S Model View Controller: Verständnisproblem Java Basics - Anfänger-Themen 13
temi Verständnisproblem Class.forName() Java Basics - Anfänger-Themen 3
2 Verständnisproblem bei Anwendung von Lower Bounded Wildcards Java Basics - Anfänger-Themen 5
V Verständnisproblem Java Basics - Anfänger-Themen 22
L [Verständnisproblem] Array wird trotz void rückgabe verändert. Java Basics - Anfänger-Themen 5
A Verständnisproblem Ausgabe Do-While-Schleife Java Basics - Anfänger-Themen 3
J Verständnisproblem einer Methode Java Basics - Anfänger-Themen 20
M Konstruktur - Verständnisproblem Java Basics - Anfänger-Themen 4
C Postinkrement und println - Verständnisproblem Java Basics - Anfänger-Themen 8
T Verständnisproblem beim Vigenere-Verfahren Java Basics - Anfänger-Themen 2
Q MVC Verständnisproblem: Controller vs model.modelChanged() Java Basics - Anfänger-Themen 0
N Verständnisproblem InsertionSort. Java Basics - Anfänger-Themen 2
D Verständnisproblem Java Basics - Anfänger-Themen 2
B VerständnisProblem mit Beispielaufgabe aus Buch Java Basics - Anfänger-Themen 1
H Polymorphie Verständnisproblem Vererbung/Polymorphie Java Basics - Anfänger-Themen 4
FrankR2 Grundsätzliches Verständnisproblem: Java 32/64-bit; Windows 7/8, 32/64-bit-System Java Basics - Anfänger-Themen 5
S Verständnisproblem bei Interfaces Java Basics - Anfänger-Themen 6
V Verständnisproblem Java Basics - Anfänger-Themen 5
V Arrays-verständnisproblem Java Basics - Anfänger-Themen 4
M Collections HashSet verständnisproblem Java Basics - Anfänger-Themen 9
S Verständnisproblem einer Übungsaufgabe Java Basics - Anfänger-Themen 6
H Abstrakte Basisklasse Verständnisproblem! Java Basics - Anfänger-Themen 8
G Verständnisproblem mit swing Java Basics - Anfänger-Themen 6
F Methoden Cannot refer to a non-final variable.. verständnisproblem. Java Basics - Anfänger-Themen 7
P Verständnisproblem main Methode Java Basics - Anfänger-Themen 9
S Klassen Verständnisproblem Konstruktor Java Basics - Anfänger-Themen 7
I e.getMessage(); - Verständnisproblem Java Basics - Anfänger-Themen 6
lesni Vererbung Vererbung - Verständnisproblem Java Basics - Anfänger-Themen 2
M OOP Polymorphie/Vererbung Verständnisproblem Java Basics - Anfänger-Themen 2
J Verständnisproblem Methoden-Kettung Java Basics - Anfänger-Themen 3
A Vererbung Verständnisproblem bei Übung Java Basics - Anfänger-Themen 5
E Verständnisproblem Typkonvertierung Java Basics - Anfänger-Themen 4
S OOP Verständnisproblem Umsteiger Java Basics - Anfänger-Themen 22
C Array Verständnisproblem Java Basics - Anfänger-Themen 3
P White-Box-Test Verständnisproblem Java Basics - Anfänger-Themen 11
D : ? Operator -Verständnisproblem Java Basics - Anfänger-Themen 24
G Verständnisproblem: Exceptions Java Basics - Anfänger-Themen 17
L Eclipse verlangt "{" nach ";"... Verständnisproblem Java Basics - Anfänger-Themen 5
D charAt(i) verständnisproblem Java Basics - Anfänger-Themen 4
D Verständnisproblem Marken und Schleifen Java Basics - Anfänger-Themen 19
M Verständnisproblem bei Ternären Operanten bzw. Bedingungsoperator Java Basics - Anfänger-Themen 8
T Datentypen Verständnisproblem mit main Methode Java Basics - Anfänger-Themen 3
M Verständnisproblem Threads Java Basics - Anfänger-Themen 7
X Threads und synchronized - Verständnisproblem Java Basics - Anfänger-Themen 3
W ArrayLists: Verständnisproblem bei remove() Java Basics - Anfänger-Themen 2
B Verständnisproblem zu Swing und Methoden Java Basics - Anfänger-Themen 8
A Postinkrement-Verständnisproblem Java Basics - Anfänger-Themen 12
R Iterator Liste, Verständnisproblem Java Basics - Anfänger-Themen 4
1 Verständnisproblem mit Foreach Java Basics - Anfänger-Themen 4
B Verständnisproblem bei Vererbung Java Basics - Anfänger-Themen 3
W generisches Programmieren - Verständnisproblem Java Basics - Anfänger-Themen 4
A Verständnisproblem Nr 2 Java Basics - Anfänger-Themen 14
A Array Verständnisproblem Java Basics - Anfänger-Themen 8
G Verständnisproblem --> JTree Java Basics - Anfänger-Themen 6
M Verständnisproblem mit der Klasse Thread Java Basics - Anfänger-Themen 10
N BufferedReader Verständnisproblem Java Basics - Anfänger-Themen 12
G Verständnisproblem: Code kompelieren und interpretieren Java Basics - Anfänger-Themen 3
S Polymorphie Verständnisproblem Java Basics - Anfänger-Themen 4
G Verständnisproblem Türme von Hanoi Java Basics - Anfänger-Themen 4
G Verständnisproblem Serverinput einlesen. Java Basics - Anfänger-Themen 4
J Array und Schleifen Verständnisproblem Java Basics - Anfänger-Themen 25
G Verständnisproblem Java Basics - Anfänger-Themen 4
N Verständnisproblem: Mehrere Objekte einer Klasse erstellen Java Basics - Anfänger-Themen 2
S SelectionListener + repaint().Verständnisproblem ;) Java Basics - Anfänger-Themen 7
V Verständnisproblem mit Abstrakten zu Konkreten Klassen Java Basics - Anfänger-Themen 7
A Problem mit der Stringgrösse, bzw Verständnisproblem? Java Basics - Anfänger-Themen 14
A Verständnisproblem mit ScrollPanel Java Basics - Anfänger-Themen 3
R Verständnisproblem mit Hibernate Java Basics - Anfänger-Themen 2
T Verständnisproblem mit equals() Java Basics - Anfänger-Themen 4
N datei byte für byte auslesen (verständnisproblem) Java Basics - Anfänger-Themen 2
T Verständnisproblem packages/import Java Basics - Anfänger-Themen 9
Chucky Lineare Listen Programm Verständnisproblem Java Basics - Anfänger-Themen 38
D Verständnisproblem Java Basics - Anfänger-Themen 6
S for Schleifen: Verständnisproblem Java Basics - Anfänger-Themen 15
T Vererbung von Attributen und Methoden, Verständnisproblem Java Basics - Anfänger-Themen 4
bernd while-Schleife: Verständnisproblem Java Basics - Anfänger-Themen 7
S verständnisproblem drucken Java Basics - Anfänger-Themen 11
G GridBagLayout: Verständnisproblem Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben