我见过这种情况
String s="something";
if(s != null){
statements;
}
和
if(!(s==null)){
statements;
}
运行代码时有什么不同。
答案 0 :(得分:4)
不,两个陈述完全相同。
答案 1 :(得分:2)
主要区别在于第二个不编译。你需要的是
if(!(s == null))
与
相同if(s != null)
一元运算符优先于二元运算符,所以
if(!s == null)
就像
if((!s) == null)
也不编译。
答案 2 :(得分:1)
它们应该是相同的,编译器足够智能,可以像这样进行简单的优化。
答案 3 :(得分:0)
第一个会做"如果s不是空的" (不平等检查)和第二个将做"如果不是s是空的" (平等检查,否定)。
在功能方面,它是相同的。在性能方面,它非常接近以至于它并不重要,理智的编译器应该将后者优化为前者。
重要的是你要保持可读性。不要试图用你的逻辑来尝试微观优化。这样做有零利益。
答案 4 :(得分:0)
它们是相同的并生成完全相同的字节代码。