Vergleich von Strings und Strings https://www.javadrive.jp/start/string/index4.html
[Einführung in Java] So vergleichen Sie Zeichenfolgen ("==" und "gleich") https://www.sejuku.net/blog/14621
int num = 10
if (num == 10) {
System.out.println("num ist 10.");
} else {
System.out.println("num ist nicht 10.");
}
In dieser Formel wird 10 in der Variablen num gespeichert, so dass das Verarbeitungsergebnis ist
num ist 10.
String str1 = "hoge"
String str2 = "hoge"
if (str1 == str2) {
System.out.println("str1 und str2 sind gleich.");
} else {
System.out.println("str1 und str2 sind unterschiedlich.");
}
In dieser Formel speichern die Variablen str1 und die Variable str2 das gleiche Zeichenfolgen-Hoge, daher dachte ich, dass das Verarbeitungsergebnis "str1 und str2 sind gleich" wäre.
str1 und str2 sind unterschiedlich.
.. .. .. !? Hoge !? Warum!? Ich bin hier in einem Topf stecken geblieben und habe ungefähr 300 Mal debacked.
Selbst wenn Sie mit "==" vergleichen, wird es als eine andere Zeichenfolge behandelt. Dies wird als Java-Referenz bezeichnet
Wenn eine Zeichenfolge generiert wird, wird ein Ort (Bereich) zum Speichern der Zeichenfolge im Speicher gesichert. Hoge hält den reservierten "Platz"
Mit anderen Worten, der Wert wird nicht in einer Variablen gespeichert, aber der Mechanismus ist so, dass Sie, wenn Sie sich an den Ort erinnern und hoge verwenden, diesem Ort folgen und den Wert herausziehen.
Aufgrund dieses Referenzmechanismus ist es beim Vergleich mit "==" nicht wichtig, ob die Werte der Zeichenfolgen gleich sind, sondern ob die Speicherorte der Zeichenfolgen im Speicher gleich sind.
Gibt "true" zurück, wenn es im selben Speicherbereich gespeichert ist, andernfalls "false" In der vorherigen Formel werden str1 und str2 in verschiedenen Speicherbereichen gespeichert, sodass sie "false" zurückgeben.
String str1 = "hoge"
String str2 = "hoge"
if (str1.equals(str2)) {
System.out.println("str1 und str2 sind gleich.");
} else {
System.out.println("str1 und str2 sind unterschiedlich.");
}
Verarbeitungsergebnis
str1 und str2 sind gleich.
Das erwartete Ergebnis wird zurückgegeben.
Übrigens, wenn Sie in Ruby schreiben, wird das gleiche Ergebnis auch mit "==" zurückgegeben.
str1 = "hoge"
str2 = "hoge"
if str1 == str2 then
puts "str1 und str2 sind gleich."
else
puts "str1 und str2 sind unterschiedlich."
end
# =>str1 und str2 sind gleich.
Bei Verwendung von Ruby oder JavaScript können sowohl der numerische Typ als auch der Zeichenfolgentyp mit "==" verglichen werden. Daher habe ich das Programm ohne Zweifel in Java geschrieben, aber Java ist anders.
Ich habe nach Grammatikfehlern gesucht, damit der Bildschirm ein Loch aufweist. Seien Sie jedoch vorsichtig, denn wenn Sie keine "Referenz" kennen, dauert es länger