/ / Java: == в изявление за отпечатване дава различни отговори [дубликат] - java

Java: == в изявлението за отпечатване дава различни отговори [duplicate] - java

String a = "abc";
String b = "abc";

System.out.println("Result .... " + a==b); // false
System.out.println(a==b);                  // true

1во отпечатва изявление за отпечатване false и 2ри щампи true, но в идеалния случай тя трябва да бъде true, Защо е така false в 1во изявление за отпечатване?

Отговори:

4 за отговор № 1

System.out.println("Result .... " +a==b); -> низът на резултата ще бъде добавен с "a" и след това ще се сравнява с b, така че резултатът ще бъде невярно.


4 за отговор № 2

Ред на операциите:

"Result .... " + a==b

е еквивалентно на

("Result .... " +a) == b

което ще бъде false тъй като двете струни не са еднакви позовавания.

Обяснението за това е, че + допълнителният оператор има a по-висок предимство от == логична еквивалентност.

Изразът a == b се връща true във второто си изявление, което се дължи на интернирането, в който a и b всъщност се отнасят до същия низов обект.

Кликнете тук за връзка към таблицата на Oracle за предимство на оператора в Java.


2 за отговор № 3
  1. Забравена проверка на равенството с == в Java. В Java тази операция проверява равнопоставеността на обектната връзка. Освен това той е приложим за проверка на равнопоставеността на прости номера. Трябва да използвате метода .equals

    String a = "abc";
    String b = new String(a);
    System.out.printLn(a == b);//false
    System.out.println(a.equals(b));//true
    
  2. Научете за реда на работа в Java


0 за отговор № 4

Това е така, защото в "Result .... " +a==b първо добавете "Result .... " с a и тогава == да се b, Ако пишете така "Result .... " +(a==b), тогава ще бъде наред.


0 за отговор № 5

В първото изявление сравнявате "Result .... " + a с b, Във втория, сравнявате a с b, оттук разликата. Променете първото си изявление, както следва:

 System.out.println("Result .... " + (a==b));

И имайте предвид, че низовете трябва да се сравняват с помощта на equals() метод вместо ==.


0 за отговор № 6

System.out.println("Result .... " +a==b);

низ Result е добавен с "a" и след това се сравнява с b, така че дава фалшива. (Result .... a == b) което е невярно.

Следвайте тази връзка, за да разберете предимство на операторите в Java и това.

Operator + has more precedence than == operator.

опитайте да добавите скоби, ще видите разликата. Конзолата се оценява отделно.

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

продукция

Result .... true
true