Ich möchte nur wissen, ob es einen Unterschied in Java gibt zwischen:
%Vor%Die zweite Zeile ist vielleicht nur eine Zeit Taisting?
BEARBEITEN (ZUSAMMENFASSUNG):
Aus den Antworten habe ich herausgefunden, dass es fast keinen Unterschied gibt, aber:
"Sich auf solche Standardwerte zu verlassen, wird jedoch im Allgemeinen als schlechter Programmierstil angesehen."
Aber es gibt einige starke Argumente, dies nicht zu tun - siehe akzeptierte Antwort unten.
BEARBEITEN 2
Ich habe festgestellt, dass in einigen Fällen boolean
value initialisiert werden muss, andernfalls wird der nicht kompiliert:
In meiner NetBeans IDE habe ich den Fehler - "Variable someValue wurde möglicherweise nicht initialisiert" .
Es wird interessant ..:)
Alle Instanz- und Klassenvariablen in Java werden mit einem Standardwert :
Für den Typ
boolean
ist der Standardwertfalse
.
Ihre beiden Anweisungen entsprechen also funktional in einer single-threaded-Anwendung .
Beachten Sie jedoch, dass boolean b = false;
zu zwei Schreibvorgängen führt: b
erhält zuerst seinen Standardwert false
, dann wird ihm sein Anfangswert zugewiesen (was auch false
ist). Dies kann in einem Kontext mit mehreren Threads von Bedeutung sein. In diesem Beispiel erfahren Sie, wie Sie durch explizites Festlegen des Standardwerts ein Datenrennen einleiten können.
Wenn Sie sich jedoch auf solche Standardwerte verlassen, wird dies im Allgemeinen als schlechter Programmierstil angesehen.
Ich würde das Gegenteil behaupten: das explizite Setzen von Standardwerten ist eine schlechte Praxis:
Es gibt keinen Unterschied von:
Wenn ein Feld deklariert wird, muss nicht immer ein Wert zugewiesen werden. Felder, die deklariert, aber nicht initialisiert sind, werden auf a gesetzt vernünftiger Standard vom Compiler. Im Allgemeinen, dieser Standard wird je nach Datentyp Null oder Null sein. Sich auf solche verlassen Standardwerte werden jedoch im Allgemeinen als schlechte Programmierung angesehen Stil.
Wenn Sie als primitiv deklarieren, d. h. boolean
. Der Wert wird standardmäßig false sein, wenn es sich um eine Instanzvariable (oder eine Klassenvariable) handelt.
Wenn es sich um eine Instanzvariable Boolean
handelt, wird null sein.
Wenn es innerhalb einer Methode deklariert wird, müssen Sie es initialisieren, oder es wird ein Compilerfehler auftreten.