【发布时间】:2011-02-05 09:52:05
【问题描述】:
可能的重复:
Getting strange output when printing result of a string comparison
大家好,
System.out.println() 以不同的方式处理字符串。
谁能解释一下原因
见下面代码sn-p
String a ="hello"
String b ="hello"
System.out.println("a==b"+"is"+a==b)
我希望这会打印 'a==b is true',但它只会打印 false,我不知道为什么。
【问题讨论】:
-
事实上,大多数现代 java 编译器池字符串文字,所以它实际上可能打印
a==b is true,虽然这纯粹是运气,正如大家提到的,.equals()是你应该比较的方式 -
@davin: 不,他的示例只打印了
false,因为a被连接到"a==b"+"is",并且使用==与b进行比较。 -
@Bart,当我发表评论时,问题看起来不像那样。您的评论和我的评论显然不同步,我将优雅地终止我的线程(编程意义上的“线程”,而不是论坛意义上的),对这个问题没有什么兴趣,我只是指出了一个附带事实,尽管有所有这些编辑,它不再相关。
-
不是重复的。这是关于运算符优先级,而不是字符串比较。
-
抱歉,我在意识到这与字符串比较无关,而是
a在与b进行比较之前进行了连接之前,投票决定关闭。投票决定重新开放。
标签: java string operators equality operator-precedence