Frage

Ich weiß zwar, dass ein Booleschen per Definition nur aus zwei Staaten besteht, wahr oder falsch. Ich habe mich gefragt, welchen Wert ein Boolescher hat, bevor er mit einem dieser Zustände initialisiert wird.

War es hilfreich?

Lösung

Es ist standardmäßig falsch.

Bearbeiten: Durch beliebte Nachfrage:

Es sei denn, Sie verwenden das verpackte Boolesche, was standardmäßig null ist. - Sudhir.j

Andere Tipps

Wenn es sich um eine lokale Variable handelt, handelt es sich um einen Compiler -Fehler, um sie zu verweisen, bevor es initialisiert wurde. Wenn es sich um ein Feld handelt, wird es auf False initialisiert.

public class NewMain {

    boolean foo;
    Boolean bar;

    public static void main(String[] args) {
        NewMain obj = new NewMain();

        obj.whatBoolean();
    }

    public void whatBoolean() {
        System.out.println(foo);
        System.out.println(bar);
    }
}

Ausgänge

false
null

Ich weiß, dass dies eine philosophische für eine Frage war, aber dank des Autoboxens können Sie Java als eine fast wirklich oo -Sprache verwenden (ich hasse es, primitive Typen zu haben ... nur dann, wenn es auch umgekehrt funktionieren würde). Es ändert jedoch das Verhalten, wenn Sie ein Objekt verwenden (zum besseren IMO).

Es gibt keinen dritten Staat. Wie @yishai sagte, wenn Sie keinen Wert zuweisen, stand der Booleschen Fields an False. Lokale Variablen müssen vor der Verwendung zugewiesen werden:

Der Zugriff auf eine nicht initialisierte lokale Variable führt zu einem Kompilierzeitfehler

Sehen der Arzt.

In Java Boolean Typen standardmäßig falsch.

FYI, boolean standardmäßig zu falschen, primitiven Zahlen standardmäßig 0, 0L, 0F oder 0d, char standardmäßig von ' 0', Objektreferenzen (z. B. boolean) standardmäßig Null.

Dies gilt auch für den Inhalt von Arrays. (Ein gewöhnlicher Gotcha ist, dass eine Reihe von Objekten zunächst voller Nullwerte ist)

es ist FALSCH

Wenn Sie so etwas hatten wie

boolean isTrue;

System.out.println(isTrue);

Sie sollten einen Kompilierungszeitfehler bekommen, da der Boolesche nicht initialisiert wurde. Wenn Sie dies standardmäßig versuchen, dies zu initialisieren, wird es auf false festgelegt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top