Eine Variable, die nur einen von zwei Werten haben kann, wahr oder falsch, ist eine Variable vom Typ Boolesch, und wahr und falsch sind boolesche direkte Größen. Mit der folgenden Anweisung können Sie eine boolesche Variable mit dem Namen „state“ definieren:
boolescher Zustand = wahr
Diese Anweisung initialisiert den Variablenstatus mit einem wahren Wert. Sie können die Zuweisungsanweisung auch verwenden, um einer booleschen Variablen einen Wert zuzuweisen. Beispielsweise die Aussage,
state=false
Setzen Sie den Wert der Variablen state auf false.
Derzeit können wir nicht viel mehr tun, als booleschen Variablen Werte zuzuweisen, aber wie Sie im nächsten Kapitel sehen werden, sind boolesche Variablen nützlich, wenn wir Entscheidungen in einem Programm treffen, insbesondere wenn wir Ausdrücke verwenden können, um ein It zu generieren ist für boolesche Ergebnisse nützlicher.
Es gibt mehrere Operatoren, die boolesche Werte kombinieren, darunter: Boolean AND (AND), Boolean OR (oR) und Boolean NOT (die jeweils &&, 11 und ! entsprechen) sowie Vergleichsoperatoren, die boolesche Ergebnisse erzeugen. Anstatt sie jetzt abstrakt zu lernen, gehen wir zum nächsten Kapitel über, wo wir in Übungen sehen können, wie wir sie anwenden können, um die Ausführungsreihenfolge eines Programms zu ändern.
Beachten Sie, dass sich die boolesche Variable von anderen Basisdatentypen unterscheidet. Sie kann nicht in einen anderen Basistyp konvertiert werden, und andere Basistypen können nicht in den Booleschen Typ konvertiert werden.
Vergleich von drei Methoden zum Generieren boolescher Objekte in Java
Die erste übliche Methode, mit der Java boolesche Objekte generiert, ist der new-Operator
Boolean boolean1 = new Boolean(1==1);
Der zweite Weg erfolgt über die statische Methode valueOf
Boolean boolean1 = Boolean.valueOf(1==1);
Der dritte Typ ist das automatische Boxen nach JDK1.5
Boolean boolean1 = 1==1;
Was ist der Unterschied zwischen diesen drei Methoden?
Schauen wir uns zunächst einen Code an
Boolean[] boolean1 = new Boolean[100];Boolean[] boolean2 = new Boolean[100];Boolean[] boolean3 = new Boolean[100];for (int i = 0; i < 100;i++){ boolean1[i ] = Boolean.valueOf(1==1);}for (int i = 0;i < 100;i++){ boolean2[i] = new Boolean(1==1);}for (int i = 0; i < 100;i++){ boolean3[i] = 1==1;}System.out.println("valueOf: " + String.valueOf(boolean1[1] == boolean1[2]));System.out.println("new Boolean: " + String.valueOf(boolean2[1] == boolean2[2]));System.out.println("auto wrap: " + String.valueOf(boolean3[1] == boolean3[2]));
Die Ausgabe ist:
valueOf: truenew Boolean: falseauto wrap: true
Warum passiert das?
Der Grund dafür ist, dass das mit new erstellte boolesche Objekt kontinuierlich ein neues Instanzobjekt erstellt, während valueOf die statischen Mitgliedsvariablen in der booleschen Klasse zurückgibt und keine große Anzahl identischer Instanzvariablen generiert. Das automatische Umbrechen ähnelt valueOf.
Tatsächlich empfiehlt das JDK-Dokument auch die Verwendung von valueOf anstelle von new, um boolesche Klassenobjekte zu erstellen.