/ / Java: == in print-Anweisung gibt unterschiedliche Antworten [duplizieren] - Java

Java: == in print-Anweisung gibt verschiedene Antworten [duplizieren] - Java

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 № 1

System.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
  1. 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
    
  2. 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 bdaher 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