在此字符串蚀中,在“不匹配”上显示无效代码警告吗?
String b = ("goodString")==("goodString") ? "Condition Macth": "Not Match";
即使在编译之前它也会检查字符串吗?
String a = ("goodString".equals("goodString")) ? "Condition Macth" : "Not Match";
如果我更改为.equals,则警告关闭。
答案 0 :(得分:2)
Eclipse可能会分析您的代码以检测无效代码。
在这种特定情况下,它显示警告,因为由于 string interning 这些值始终具有相同的标识,因此条件始终为true。 Eclipse会检测到并发出警告。
如果您使用equals
,则比较不再是常量表达式(JLS § 15.28),并且不再保证会返回true
。因此,警告消失了。
顺便说一句,您应该始终使用equals
来比较字符串。
答案 1 :(得分:0)
String b = ("goodString")==("goodString") ? "Condition Macth": "Not Match";
在这里,Eclipse IDE足够聪明来查找无效的代码。如果发现“如果”条件始终为真,那么它将警告“其他”部分为无效代码,因为它将永远不会执行。在此代码段中,三元条件始终为真,因此显示死代码警告。