Inhaltsverzeichnis
Vorwort
Klassenlademechanismus:
Heim Java javaLernprogramm Was ist der Unterschied zwischen Boolean und Boolean in Java?

Was ist der Unterschied zwischen Boolean und Boolean in Java?

May 05, 2023 pm 07:40 PM
java boolean

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 -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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP-Tutorial
1510
276
Behoben: Windows Update konnte nicht installiert werden Behoben: Windows Update konnte nicht installiert werden Aug 08, 2025 pm 04:16 PM

RunthewindowsUpdatetrouBleshooterviaSettings> Update & Sicherheit> FehlerbehebungOautomatischfixcommonissues.2.

Wie man eine Weile in Java einsetzt Wie man eine Weile in Java einsetzt Aug 08, 2025 pm 04:04 PM

AwhileloopinjavarePeadexecutesCodeaslongasttitionistre; 2.initializeacontrolvariableBeforetheloop;

Was ist der Serialisierungsprozess für ein Java -Objekt? Was ist der Serialisierungsprozess für ein Java -Objekt? Aug 08, 2025 pm 04:03 PM

JavaserializationConvertsanObject'SstateIntoAnabyTestreamForstorageOrtransmission, und Deserialization -ReconstructStheObjectFromThatstream.1. ToenableSerialization, aclassMustImplementtheSerializableInterface

Was ist eine Hashmap in Java? Was ist eine Hashmap in Java? Aug 11, 2025 pm 07:24 PM

AhasMapinjavaisadatastructurethatstoreskey-valuepairsforefficityRieval, Insertion und Delettion.itusushtheKey'ShashCode () methodTodeterminestoragelocationAnlowlowsaversaveryo (1) TimEcomplexityforget () und -Argine

So erstellen und verwenden Sie ein Array in Java So erstellen und verwenden Sie ein Array in Java Aug 11, 2025 pm 04:00 PM

TocreateAndueanArrayinjava, FirstDeclarethearraywithDedatatypeNDSquarebrackets, dannInstantiate -withenewKewordorinitializeTDirectlyWithValues; 1.DeclareandCreatatype [] arrayname = newdatatype [grizatatype

Python Argparse erforderte Argument -Beispiel Python Argparse erforderte Argument -Beispiel Aug 11, 2025 pm 09:42 PM

Bei der Verwendung des ArgParse -Moduls können die bereitgestellten Parameter erreicht werden, indem erforderlich ist. 1. Verwenden Sie erforderliche = treu, um optionale Parameter (z. B. -Eingabe) zu setzen, um erforderlich zu sein. Wenn dies bei der Ausführung des Skripts nicht bereitgestellt wird, wird ein Fehler gemeldet. 2. Positionsparameter sind standardmäßig erforderlich, und es ist nicht erforderlich, erforderlich zu sein, die erforderliche = true; 3.. Es wird empfohlen, Positionsparameter für die erforderlichen Parameter zu verwenden. Gelegentlich werden die optionalen Parameter von erforderlich = true verwendet, um die Flexibilität aufrechtzuerhalten. 4. Erforderlich = True ist der direkteste Weg, um Parameter zu steuern. Nach der Verwendung muss der Benutzer beim Aufrufen des Skripts entsprechende Parameter bereitstellen, da das Programm ansonsten einen Fehler auffordert und beendet.

Wie erstellt man einen Thread in Java? Wie erstellt man einen Thread in Java? Aug 11, 2025 pm 01:34 PM

YoucancreateatheadinjavabytendingTheTheadhreadClassOrimplementingTherunnableInterface.2.EutendingThreadinvolvesCreresedaclassTheatoverridestherun () methodeCallingStart () onaninstance.3.implementingRunNableRequiresDefiningTherun () methodInaklassTheatimple

So verwenden Sie einen Set in Java So verwenden Sie einen Set in Java Aug 11, 2025 am 11:57 AM

ChoosetheAppropriatesetImplementation: UseHashSetForfastoperations -MitoutoDororder, LinkedHashSetforintionReorder, andreesetforsortedorder.2.AddelementsWithadd () andremoveWithremove (), WHEREDD () returnSefalsesifTheelementisalreadyReadyReadyReadyResent.3.3.3.2.

See all articles