Heim  >  Artikel  >  Java  >  Was ist der Unterschied zwischen Boolean und Boolean in Java?

Was ist der Unterschied zwischen Boolean und Boolean in Java?

PHPz
PHPznach vorne
2023-05-05 19:40:043166Durchsuche

Vorwort

Jemand hat gefragt, ob es nicht nur zwei Arten von booleschen Werten gibt: wahr und falsch? Warum hat die von ihm definierte Eigenschaft einen Nullwert?

Wir sollten zunächst klarstellen, dass Boolean der grundlegende Datentyp von Java und Boolean eine Klasse von Java ist. Der boolesche Typ weist der Eigenschaft während der Phase „Null zuweisen“ den Wert „Falsch“ zu. Boolean ist eine Klasse, die dem Objekt während der Phase „Nullwert zuweisen“ Null zuweist.

Wenn es sich um eine statische Eigenschaft handelt, wird sie beim Laden der Klasse zugewiesen. Wenn es sich um ein normales Klassenattribut handelt, wird der Wert zugewiesen, wenn das Objekt instanziiert wird. Diese beiden Punkte können Ihnen helfen, den „Klassenlademechanismus“ und den „Objekterstellungsprozess“ zu verstehen.

Klassenlademechanismus:

  • Laden: Rufen Sie den binären Bytestrom der Klasse basierend auf dem vollständigen Namen der Klasse ab und laden Sie die Klasse in den Speicher und ein Klassenobjekt, das diese Klasse darstellt, wird im Heap als Zugriffseingang auf die Methodenbereichsdaten generiert

  • Überprüfung: Überprüfen Sie, ob der Bytestrom in der Klassendatei vorhanden ist entspricht der JVM-Spezifikation , der Standardwert von Boolean ist null)#🎜🎜 #

  • Analyse: Symbolreferenzen im Konstantenpool in direkte Referenzen umwandeln, was als Konvertieren von Objektreferenzen in Zeiger verstanden werden kann#🎜 🎜#

    #🎜🎜 #Initialisierung: Beginnen Sie wirklich mit der Ausführung des Codes in der Klasse, der statischen Eigenschaftszuweisung und dem statischen Block
  • Objektinstanziierungsprozess :
  • Überprüfen Sie, ob die Klasse geladen wurde (elterliche Delegation)

Weisen Sie dem Objekt Speicherplatz zu (Zeigerkollision)
  • #🎜🎜 #

    Nullwertinitialisierung (falsch/null)

  • Setzen Sie den Objektheader (object Generationsalter und andere Informationen)

  • #🎜 🎜#
  • Führen Sie die 7e51f00a783d7eb8f68358439dee7daf-Methode aus (Attributinitialisierung, Anweisungsblock und Konstruktionsmethode)

    #🎜🎜 #
  • Also, Boolean wurde nur geladen, noch nicht instanziiert, es wird kein Speicher zugewiesen, bevor es instanziiert wird, also ist es null
  • Als nächstes können wir uns die Eigenschaften und Konstruktionsmethoden von Boolean ansehen Verstehen Sie, wie es Boolesche Werte umschließt Das Entwicklungshandbuch ist auch sehr gut geschrieben. Beim Auspacken kommt es zu NPE.

  • Stellen Sie sich ein Szenario vor: Ihr Mädchen fragt Sie: Liebst du mich? Aber du hast nicht klar gehört. Wenn Sie ein Boolescher sind, werden Sie antworten: „Ich habe es nicht klar gehört (null), wenn Sie ein Boolescher sind, werden Sie antworten: „Ich liebe dich nicht mehr (falsch)
  • “ und Du wirst geschlagen. #? Quellcode-Perspektive: Big Boolean initialisiert auch zwei statische Objekte 🎜# Ich habe eine Testklasse geschrieben: Testmethode (ermitteln Sie die Zeit, wenn der große boolesche Typ wahr ist, erhalten Sie die Zeit, wenn der kleine boolesche Typ wahr ist, durchlaufen Sie 100, 1000, 10000, 100000 Mal, um zu sehen, welche Zeit kürzer und größer ist mal)

  • Test Der Code lautet wie folgt:
// final boolean类型的属性,通过构造方法注入值
private final boolean value;

// 构造方法 Boolean a = true 实际上就是调用这个方法
public Boolean(boolean value) {
    this.value = value;
}

// 构造方法
public Boolean(String s) {
    this(parseBoolean(s));
}

Das Ausführungsergebnis ist wie folgt:

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Boolean und Boolean in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen