Heim > Java > javaLernprogramm > Hauptteil

Vergleichendes Teilen über String.equals und == in Java

黄舟
Freigeben: 2017-08-20 09:36:37
Original
1482 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich relevante Informationen zum Vergleich zwischen String.equals und == in Java vorgestellt. Freunde, die sie benötigen, können darauf verweisen

Vergleich zwischen String.equals und == in Java

Ich lerne Java schon seit einiger Zeit, aber gestern Abend war ich plötzlich verärgert über „asd“==getpara(“password“): Tatsächlich unterscheiden sich viele Dinge in JAVA völlig von den Sprachen ​Ich war schon einmal mit dem einfachsten neuen String ("asd") konfrontiert! = neuer String ("asd").

1 Das einfachste Programm:

public class A {
  public static void main(String args[]) {
    String s1 = "Hello";
    String s2 = "Hello";
    System.out.println(s1 == s2);
  }
}
Nach dem Login kopieren

Auf jeden Fall sagen viele Leute, Ausgabe wahr, tatsächlich Ausgabe wahr, s1 und s2 beziehen sich auf dasselbe. Aber wenn dieses Programm anders geschrieben wäre, wäre es definitiv anders.

2 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));
  }
}
Nach dem Login kopieren

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));
  }
}
Nach dem Login kopieren

Dann ist das Ergebnis etwas unsicher. Wenn man sie einzeln betrachtet, wird mindestens eine davon 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");
Nach dem Login kopieren

Die JVM erhält 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:

Reihenfolge:

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));
  }
}
Nach dem Login kopieren

Reihenfolge mischen:

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));
  }
}
Nach dem Login kopieren

Also dieses Mal Es sollte klar sein =

zwei Objekte, aber in der Mitte sind einige schüchterne Dinge hinzugefügt, daher muss die Antwort wahr, wahr, wahr, wahr sein.

Was genau ist also ein Praktikant?

4 interne Funktion:

Beim Aufruf der internen Methode, wenn der Pool bereits eine Zeichenfolge enthält, die diesem String-Objekt entspricht (das Objekt wird durch equal dargestellt). (Object)-Methode) wird die Zeichenfolge im Pool 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.


Das obige ist der detaillierte Inhalt vonVergleichendes Teilen über String.equals und == in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage