可能重复:
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
而我不知道为什么。
答案 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视为不同的对象。当我们创建这样的字符串时,它指的是不同的字符串池。