String a = "abc";
String b = "abc";
System.out.println("Result .... " + a==b); // false
System.out.println(a==b); // true
1st print Anweisung wird gedruckt false
und 2nd Drucke true
, obwohl es im Idealfall sein muss true
. Warum ist es false
in 1st Erklärung drucken?
Antworten:
4 für die Antwort № 1System.out.println("Result .... " +a==b);
-> Die Ergebniszeichenfolge wird mit "a" angehängt und dann mit b verglichen, so dass das Ergebnis falsch ist.
4 für die Antwort № 2
Reihenfolge der Operationen:
"Result .... " + a==b
ist äquivalent zu
("Result .... " +a) == b
was sein wird false
da die beiden Saiten nicht die gleiche Referenz sind.
Die Erklärung dafür ist, dass die +
Zusatzoperator hat a höher Vorrang als ==
logische Äquivalenz.
Der Ausdruck a == b
kommt zurück true
in Ihrer zweiten Aussage wegen interning, in welchem a
und b
Verweisen Sie tatsächlich auf dasselbe Zeichenfolgenobjekt.
Klicken Hier für einen Link zur Rangfolge von Oracle-Operatoren in Java.
2 für die Antwort № 3
Ich habe vergessen, die Gleichheit mit == in Java zu überprüfen. In Java überprüft diese Operation die Gleichheit der Objektverknüpfung. Zusätzlich kann die Gleichheit einfacher Zahlen überprüft werden. Sie sollten die Methode .equals verwenden
String a = "abc"; String b = new String(a); System.out.printLn(a == b);//false System.out.println(a.equals(b));//true
Erfahren Sie mehr über Operationsreihenfolge in Java
0 für die Antwort № 4
Es ist, weil in "Result .... " +a==b
es zuerst hinzufügen "Result .... "
mit a
und dann ==
zu b
. Wenn du so schreibst "Result .... " +(a==b)
, dann wird es in Ordnung sein.
0 für die Antwort № 5
In der ersten Anweisung vergleichen Sie "Result .... " + a
mit b
. Im zweiten Fall vergleichen Sie a
mit b
daher der Unterschied. Ändern Sie Ihre erste Aussage wie folgt:
System.out.println("Result .... " + (a==b));
Und denken Sie daran, dass Saiten mit dem verglichen werden sollten equals()
Methode statt ==
.
0 für die Antwort № 6
System.out.println("Result .... " +a==b);
Zeichenfolge Result
wird mit "a" angehängt und dann mit b verglichen, so dass es falsch ist. (Result .... a == b)
das ist falsch.
Folgen Sie diesem Link, um zu verstehen Vorrang von Operatoren in Java und Dies.
Operator + has more precedence than == operator.
Wenn Sie Klammern hinzufügen, sehen Sie den Unterschied. Halterung wird separat ausgewertet.
public static void main(String[] args) {
String a = "abc";
String b = "abc";
System.out.println("Result .... " + (a == b)); // false
System.out.println(a == b); // true}
}
Ausgabe
Result .... true
true