java println(“a == b”+“is”+ a == b)打印false而不是“a == b is true”

时间:2011-02-05 09:52:06

标签: java string operators equality operator-precedence

  

可能重复:
  Getting strange output when printing result of a string comparison

大家好,

System.out.println()以不同的方式使用字符串。 任何人都可以解释原因

请参阅以下代码段

String a ="hello"
String b ="hello"

System.out.println("a==b"+"is"+a==b)

我希望这会打印'a==b is true',但它会打印false而我不知道为什么。

3 个答案:

答案 0 :(得分:8)

打印一个false,因为您没有对布尔表达式进行分组。

表达式:

"a==b"+"is"+a==b

评估为

("a==b"+"is"+a) == (b)

虽然你想让它做一个字符串连接:

"a==b"+"is"+ (a==b)

也就是说,你不应该像其他人指出的那样使用==来比较字符串。

答案 1 :(得分:1)

问题不在于System.out.println();它与String对象与==进行比较。使用.equals()方法比较两个字符串对象。请参阅以下链接。 String Object comparison

答案 2 :(得分:-1)

这可能是因为它将a和b视为不同的对象。当我们创建这样的字符串时,它指的是不同的字符串池。