1 Das einfachste Programm:
public class A { public static void main(String args[]) { String s1 = "Hello"; String s2 = "Hello"; System.out.println(s1 == s2); } }
Viele Leute müssen sagen, dass sich die Ausgabe von „true“ tatsächlich auf die Ausgabe von „true“ bezieht. Aber wenn dieses Programm anders geschrieben wäre, wäre es definitiv anders.
2 Die erste Variante:
public class A { public static void main(String args[]) { String s1 = "Hello"; String s2 = new String("Hello"); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); } }
oder:
public class A { public static void main(String args[]) { String s1 = new String("Hello"); String s2 = new String("Hello"); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); } }
Dann ist das Ergebnis etwas unsicher, manche haben schlechte Ideen, zumindest einzeln betrachtet Einer von ihnen wird definitiv nicht gleich sein.
Die Ergebnisse dieser beiden Programme sind sehr einfach. s1 == s2 bestimmt seine Referenz (entspricht der Verwendung von Speicheradressen und Zeigern). Die objekteigene Methode, um zu bestimmen, ob die Werte gleich sind.
Im folgenden Ausdruck:
String s1 = "Hello"; String s2 = new String("Hello");
Was die JVM erhält, sind zwei verschiedene Nachrichten:
1. Ich möchte eine „Hallo“-Zeichenfolge erstellen.
2. Ich möchte eine neue „Hallo“-Zeichenfolge erstellen, nicht dieselbe wie die ursprüngliche.
Also, s1 != s2.
3 Die zweite Variante:
顺序排列: public class A { public static void main(String args[]) { String s1 = new String("Hello"); String s2 = new String("Hello"); String s3 = "Hello"; s1=s1.intern(); s2=s2.intern(); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); System.out.println(s3 == s2); System.out.println(s3.equals(s2)); } }
打乱顺序排列: public class A { public static void main(String args[]) { String s1 = new String("Hello"); String s3 = "Hello"; s1=s1.intern(); String s2 = new String("Hello"); s2=s2.intern(); //也可以String s2 = new String("Hello").intern(); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); System.out.println(s3 == s2); System.out.println(s3.equals(s2)); } }
Dann sollte es dieses Mal klar sein =
Zwei Objekte, Aber es gibt In der Mitte wurden einige schüchterne Dinge hinzugefügt, daher muss die Antwort wahr, wahr, wahr, wahr sein.
Was genau ist ein Praktikant?
4 interne Funktion:
Wenn die interne Methode aufgerufen wird und der Pool bereits eine Zeichenfolge enthält, die diesem String-Objekt entspricht (das Objekt wird durch die Methode equal(Object) bestimmt), wird es wird an die Poolzeichenfolge zurückgegeben. Andernfalls fügen Sie dieses String-Objekt zum Pool hinzu und geben einen Verweis auf dieses String-Objekt zurück.
Anwendbare Situationen von Praktikanten: Situationen, in denen mehrere identische große Zeichenfolgen gleichzeitig angezeigt werden, z. B. der Entwurf einer Nachrichtenwarteschlange, in der möglicherweise mehrere identische Nachrichten angezeigt werden.
Weitere Artikel zu [JAVA] String.equals und == verschiedenen Effekten finden Sie hier PHP chinesische Website!