Heim  >  Artikel  >  Java  >  Vergleichendes Teilen über String.equals und == in Java

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

黄舟
黄舟Original
2017-08-20 09:36:371469Durchsuche

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);
  }
}

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));
  }
}

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. 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");

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));
  }
}

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));
  }
}

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!

Stellungnahme:
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