java - eclipse在编译前比较静态值吗?

标签 java string

在此字符串中,Eclipse 在“不匹配”上显示死代码警告?

 String b = ("goodString")==("goodString") ? "Condition Macth": "Not Match";

它在编译之前是否检查字符串?

String a = ("goodString".equals("goodString")) ? "Condition Macth" : "Not Match";

如果我更改为 .equals 则警告关闭。

最佳答案

Eclipse 可能会分析您的代码以检测死代码。

在这种特殊情况下,它会显示警告,因为这些值始终具有相同的标识,因为 string interning ,因此条件始终为真。 Eclipse 检测到这一点并发出警告。

如果您使用equals,则比较不再是常量表达式 ( JLS § 15.28 ),并且不再保证返回true。因此警告消失了。

<小时/>

顺便说一句,您应该始终使用equals来比较字符串。

关于java - eclipse在编译前比较静态值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54340615/

相关文章:

java - 无法分配超过 1397mb 的 JVM 堆

java - 如何创建一个在行首输出两个 '#' 乱码的速度模板?

java - RNetLogo 可在 R3.1.1.0 上运行吗?

javascript - Angular 范围内的值变得不确定

linux - 如何将字符添加到 bash 中特定字符之间的字符串?

php - PHP 中数字值和字符串值的区别

java - DropDownChoices 返回 null 作为下拉列表中所选项目的值

regex - Delphi - 如何从字符串中提取数字?

java - 计算字符串中逗号分隔的正数和负数的总出现次数

c - 字符串终止 - char c=0 与 char c ='\0'