Почему 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 потому что + оператор имеет более высокий приоритет, чем == оператор.

Другие вопросы по тегам