Heim > Java > javaLernprogramm > Hauptteil

Einführung in das Hinzufügen und Vergleichen von Zeichenfolgen (ausführlich)

不言
Freigeben: 2019-04-13 09:36:36
nach vorne
4096 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine ausführliche Einführung in die Addition und den Vergleich von String-Strings. Ich hoffe, dass er für Sie hilfreich ist. helfen.

String-String-Addition und -Vergleich

public static void main(String[] args)  {
    String a = "helloword";
    final String b = "hello";
    String d = "hello";
    String c = b + "word";
    String e = d + "word";
    String f ="hello"+"word";
    System.out.println(a == c);
    System.out.println(a == e);
    System.out.println(a == f);

}
Nach dem Login kopieren

输出:
true
false
true
Nach dem Login kopieren

Das erste, was klargestellt werden muss, sind die Referenzdaten type = = Was verglichen wird, ist der Adresswert, gleich wird nicht neu geschrieben und was verglichen wird, ist der Inhalt. String wird neu geschrieben, StringBuffer wird nicht neu geschrieben

Zweitens:

a= =c ist wahr, weil b ein Endtyp ist und der genaue Wert während der Kompilierung bekannt sein kann -Zeitkonstante. Das heißt, wenn die endgültige Variable verwendet wird, entspricht sie einem direkten Zugriff auf die Konstante und muss nicht zur Laufzeit bestimmt werden. Daher wird die Variable b im obigen Codeabschnitt, da sie durch final geändert wird, als Compilerkonstante behandelt. Wenn also b verwendet wird, wird die Variable b direkt durch ihren Wert ersetzt. Also ist c = b+"word" gleich c = "hello" + "word". Dasselbe wie ---> Wenn final, wird der Inhalt direkt anstelle der Adresse verglichen.

a ==e ist falsch, weil e = d+"word" tatsächlich ein StringBuffer-Objekt erstellt und dann das StringBuffer-Objekt verwendet, um die Append-Methode auszuführen, um das String-Objekt "ab" zu erstellen, und es dann in konvertiert Zeichenfolge. Aber dieses konvertierte String-Objekt, also das obige s3, wird im Heap platziert. Und s4 ist eine String-Konstante, die im Konstantenpool platziert wird. Was also zurückgegeben wird, ist falsch. ----->Die Adresswerte sind unterschiedlich

a ==f ist wahr, weil: Wenn Konstanten hinzugefügt werden, werden sie während der Kompilierung tatsächlich direkt zu „helloword“ hinzugefügt. Dies ist die Optimierung der JVM Daher sind beim Ausführen die Bytecodes von a und f gleich. Da es im Konstantenpool ein „helloword“ gibt, verweisen die beiden Referenzen auf eine Zeichenfolge „helloword“, sodass das Rückgabeergebnis ebenfalls wahr ist. ----->Zeigen Sie auf dieselbe Adresse

[Verwandte Empfehlungen: Java-Tutorial]

Das obige ist der detaillierte Inhalt vonEinführung in das Hinzufügen und Vergleichen von Zeichenfolgen (ausführlich). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
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