2015-09-06 69 views
-2

假设我有这样的代码为什么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)); 

打印“的真实游戏”

我只是好奇它为什么没有在第一个案件中采取打印的第一部分。我只想知道在编译时发生了什么。

谢谢。

+0

'1+ 1 == 2'是真的吗? (或者它会给你一个错误,说你不能添加一个int和一个布尔值?)空格被忽略。 – immibis

+2

不应该打印“假”? – Svante

+0

至少2个潜在问题:1.您不使用'=='比较Java中的字符串。 2.你显然知道你的运算符优先级比我好 - 我会添加一些'()'来明确你的意图是什么...... – John3136

回答

1

First, it really prints false,因为"Game of thrones" != "thrones"

其次,你似乎已经回答了你自己的问题。它解析"Game of" + "thrones" == s("Game of" + "thrones") == s,因为the + operator has a higher precedence than the == operator

+0

oh ..yes!我没有意识到这一点! 。它的第一个连接,然后比较。得到它了。谢谢 – shashank

+0

另外,你应该真的使用'String.equals()'方法比较字符串。 –

+0

为什么这样?是不是一样? – shashank