Java eclipse在编译之前比较静态值吗?
在这个字符串中,eclipse显示关于“不匹配”的死代码警告 它是否在编译之前检查字符串Java eclipse在编译之前比较静态值吗?,java,string,Java,String,在这个字符串中,eclipse显示关于“不匹配”的死代码警告 它是否在编译之前检查字符串 String a = ("goodString".equals("goodString")) ? "Condition Macth" : "Not Match"; 如果我改为.等于警告关闭。Eclipse可能会分析您的代码以检测死代码 在这种特殊情况下,它显示警告,因为这些值始终具有相同的标识,因此条件始终为真。Eclipse检测到这一点并发出警告 如果使用equals,则比较不再是一个常量表达式(),也
String a = ("goodString".equals("goodString")) ? "Condition Macth" : "Not Match";
如果我改为.等于警告关闭。Eclipse可能会分析您的代码以检测死代码 在这种特殊情况下,它显示警告,因为这些值始终具有相同的标识,因此条件始终为真。Eclipse检测到这一点并发出警告 如果使用
equals
,则比较不再是一个常量表达式(),也不再保证返回true
。因此,警告消失了
顺便说一下,您应该始终使用
equals
来比较字符串
String b = ("goodString")==("goodString") ? "Condition Macth": "Not Match";
在这里,EclipseIDE足够聪明,可以找到死代码。若发现“If”条件始终为true,那个么它会以死代码的形式警告“else”部分,因为它永远不会被执行。在此代码段中,三元条件始终为真,因此显示死代码警告 您是指“EclipseIDE”(显示静态检查警告)还是“(Eclipse)Java编译器”(即,它是否会影响编译的方式)?对于“实际”字符串比较,您将使用
equals
。我想你的问题也可以延伸到这一点。请投编辑一票!由于equals是一个方法而不是一个常量表达式,因此eclipse不再能够确定死代码。这就清楚了!:)
String b = ("goodString")==("goodString") ? "Condition Macth": "Not Match";