Lassen Sie uns zunächst das Wissen über die Speicherzuordnung in JVM vorstellen:
(Empfohlenes Tutorial: Java-Kurs)
In JVM ist der Speicher in Heap-Speicher und Stapelspeicher unterteilt. Der Unterschied zwischen ihnen besteht darin, dass wir beim Erstellen eines Objekts (neues Objekt) den Konstruktor des Objekts aufrufen, um Platz freizugeben, die Objektdaten im Heap-Speicher zu speichern und gleichzeitig die entsprechende Referenz im Stapelspeicher zu generieren. Wenn wir es im nachfolgenden Code aufrufen, verwenden wir Referenzen im Stapelspeicher. Zu beachten ist außerdem, dass grundlegende Datentypen im Stapelspeicher gespeichert werden.
Erstes Verständnis des Unterschieds zwischen equal und ==:
== besteht darin, zu bestimmen, ob zwei Variablen oder Instanzen auf denselben Speicherbereich verweisen, während equal darin besteht, zu bestimmen, ob die Werte des Speicherbereichs auf den verweisen zwei Variablen oder Instanzen sind gleich. == bezieht sich auf den Vergleich von Speicheradressen und equal() vergleicht den Inhalt von Zeichenfolgen. == bezieht sich darauf, ob die Referenzen gleich sind, und equal() bezieht sich darauf, ob die Werte gleich sind.
Verwenden Sie ein Bild, um kurz die Beziehung zwischen ihnen zu zeigen:
Test:
Detaillierte Erklärung des Unterschieds zwischen gleich und ==:
== Der Vergleich befindet sich in der Variablen (Stapel) Speicher Anhand der (Heap-)Speicheradresse des gespeicherten Objekts wird ermittelt, ob die Adressen zweier Objekte gleich sind, also auf dasselbe Objekt verweisen. Was verglichen wird, ist die eigentliche Zeigeroperation. Equals wird verwendet, um zu vergleichen, ob der Inhalt zweier Objekte gleich ist. Da alle Klassen von der Klasse java.lang.Object erben, ist sie auf alle Objekte anwendbar die Klasse, aber die Methode equal in Object gibt ein ==-Urteil zurück.
String s="abcd" ist eine ganz besondere Form, die sich wesentlich von new unterscheidet. Dies ist die einzige Möglichkeit in Java, Objekte ohne neue zu generieren. Die Zuweisung in der Form String s="abcd"; wird in Java als direkte Variable bezeichnet. Sie befindet sich im Konstantenpool und nicht wie neu im komprimierten Heap.
Zeichenfolgen in dieser Form werden in der JVM festgehalten. Das heißt, nach der Deklaration einer solchen Zeichenfolge sucht die JVM zunächst im Konstantenpool, ob ein Objekt mit dem Wert „abcd“ vorhanden ist Das heißt, der ursprüngliche Verweis und der aktuelle Verweis verweisen auf dasselbe Objekt. Wenn nicht, wird beim nächsten Mal ein neuer „abcd“ erstellt "; wieder Zeigt s1 auf das Objekt „abcd“, also eine in dieser Form deklarierte Zeichenfolge. Solange die Werte gleich sind, verweisen alle Mehrfachreferenzen auf dasselbe Objekt.
Und String s = new String("abcd"); ist das gleiche wie jedes andere Objekt, solange es aufgerufen wird. Es kann auch so verstanden werden: String str = „hello“; Überprüfen Sie zunächst, ob sich im Speicher ein Objekt „hello“ befindet. Wenn ja, lassen Sie str auf dieses „hello“ zeigen.
Wenn kein „Hallo“ im Speicher vorhanden ist, erstellen Sie ein neues Objekt, um „Hallo“ zu speichern. String str=new String („Hallo“) bedeutet, dass unabhängig davon, ob das Objekt „Hallo“ bereits im Speicher vorhanden ist, erstellt wird ein neues Objekt, um es zu speichern.
Test:
Verwandte Empfehlungen: Erste Schritte mit Java
Das obige ist der detaillierte Inhalt vonErklären Sie im Detail den Unterschied zwischen gleich und ==. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver Mac
Visuelle Webentwicklungstools

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Dreamweaver CS6
Visuelle Webentwicklungstools