-2

假设我有这个代码

public class Test{
    public static void main (String args[]) { 
        String s = "thrones";
        System.out.println("Game of" + "thrones" == s) ;
    }
}

上述代码块的输出只是“假”

但它不应该打印“真实游戏”吗?

但是,如果我为 ("thrones"==s) 加上括号,它会正确打印

System.out.println("Game of" +    ("thrones"==s));

'真实的游戏'

我只是好奇为什么在第一种情况下它没有占据印刷品的第一部分。我只想知道编译时那里发生了什么。

谢谢。

4

1 回答 1

1

首先,它真的打印出来了false,因为"Game of thrones" != "thrones"!

其次,您似乎已经回答了自己的问题。它解析"Game of" + "thrones" == s("Game of" + "thrones") == s,因为运算符+优先级高于==运算符

于 2015-09-06T23:02:16.837 回答