Java Frage zu Static [geschlossen]

7

Ich bin heute in unserem Code auf diesen Fehler gestoßen, und es hat eine Weile gedauert, bis er es begriffen hat. Ich fand es interessant, also entschied ich mich, es zu teilen. Hier ist eine vereinfachte Version des Problems:

%Vor%

Raten Sie, was Test.getTest(); returns & amp; Warum?

    
Caner 05.07.2011, 13:57
quelle

5 Antworten

18

Es sollte "null world" gedruckt werden. Statische Initialisierungen werden in der angegebenen Reihenfolge durchgeführt. Wenn Sie die Deklaration höher als den statischen Block verschieben, sollten Sie "Hello World" erhalten.

    
sshannin 05.07.2011, 14:01
quelle
1

Es gibt "null World" zurück Die Dokumentation besagt, dass die statische Initialisierung in der Reihenfolge erfolgt, in der sie im Quellcode erscheint. Wenn Sie also Ihren statischen Block nach unten verschieben, wird "Hello World"

zurückgegeben     
Loduwijk 05.07.2011 14:08
quelle
0

Er gibt null World zurück, weil die Variable text zweimal initialisiert wird, beim ersten Mal ist es "Hello" und beim zweiten Mal ist es null. Wenn Sie Ihre text Variablendeklaration vor die statische Init verschieben, erhalten Sie Hello World .

    
reef 05.07.2011 14:02
quelle
0

Die Antwort sollte "null Welt" sein.

    
jajo87 05.07.2011 14:06
quelle
0

Java-Initialisierer sind so definiert, dass sie in derselben Reihenfolge ausgeführt werden, in der sie im Quellcode erscheinen. Daher wird Ihr Initialisierungsblock ausgeführt, bevor Sie dem Text null zuweisen.

pro Tipp gegen solche Fehler: Machen Sie Ihre statischen Variablen endgültig oder verwenden Sie überhaupt keine statischen Variablen.

    
josefx 05.07.2011 14:06
quelle

Tags und Links