Standard boolescher Wert in Java [duplizieren]

7

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:

%Vor%

In meiner NetBeans IDE habe ich den Fehler - "Variable someValue wurde möglicherweise nicht initialisiert" .

Es wird interessant ..:)

    
Ernestas Gruodis 02.02.2014, 09:49
quelle

5 Antworten

19

Alle Instanz- und Klassenvariablen in Java werden mit einem Standardwert :

  

Für den Typ boolean ist der Standardwert false .

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 führt unnötige Unordnung
  • ein
  • es kann zu subtilen Nebenläufigkeitsproblemen führen
assylias 02.02.2014, 09:52
quelle
3

Wenn Sie es nicht initialisiert haben, wird es false sein. also gibt es keinen Unterschied zwischen ihnen

    
lakshman 02.02.2014 09:52
quelle
2

Der Standardwert des boolean -Datentyps ist false , sodass wir sagen können, dass es keinen Unterschied gibt.

    
Kick 02.02.2014 09:53
quelle
1

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.

    
marcinj 02.02.2014 09:54
quelle
0

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.

    
StarsSky 02.02.2014 09:54
quelle

Tags und Links