这些比较之间有任何区别

时间:2011-12-07 11:29:42

标签: java conditional-statements

我见过这种情况

String s="something";

if(s != null){
statements;
}

if(!(s==null)){
statements;
}

运行代码时有什么不同。

5 个答案:

答案 0 :(得分:4)

不,两个陈述完全相同。

答案 1 :(得分:2)

主要区别在于第二个不编译。你需要的是

if(!(s == null))

相同
if(s != null)

一元运算符优先于二元运算符,所以

if(!s == null)

就像

if((!s) == null)

也不编译。

答案 2 :(得分:1)

它们应该是相同的,编译器足够智能,可以像这样进行简单的优化。

答案 3 :(得分:0)

第一个会做"如果s不是空的" (不平等检查)和第二个将做"如果不是s是空的" (平等检查,否定)。

在功能方面,它是相同的。在性能方面,它非常接近以至于它并不重要,理智的编译器应该将后者优化为前者。

重要的是你要保持可读性。不要试图用你的逻辑来尝试微观优化。这样做有零利益

答案 4 :(得分:0)

它们是相同的并生成完全相同的字节代码。