Почему java игнорирует первую часть оператора print при объединении с логическим оператором?
Предположим, у меня есть этот код
public class Test{
public static void main (String args[]) {
String s = "thrones";
System.out.println("Game of" + "thrones" == s) ;
}
}
Вывод вышеупомянутого блока кода просто 'ложь'
Но не стоит ли печатать "Игру правды"
Однако, если я поставлю скобку для ("троны"==s), он печатается правильно
System.out.println("Game of" + ("thrones"==s));
"Игра правды"
Мне просто любопытно, почему в первом случае это не первая часть печати. Я просто хочу знать, что там происходит во время компиляции.
Благодарю.
1 ответ
Во-первых, это действительно печатает false
, так как "Game of thrones" != "thrones"
!
Во-вторых, вы, кажется, ответили на свой вопрос. Это разбор "Game of" + "thrones" == s
как ("Game of" + "thrones") == s
потому что +
оператор имеет более высокий приоритет, чем ==
оператор.