空比较

时间:2011-08-08 04:02:39

标签: java

我今天看到了这段代码,想知道

之间是否存在差异
return (null==employeeName ? "": employeeName);

return (employeeName == null ? "": employeeName);

6 个答案:

答案 0 :(得分:5)

不再。

过去就是这样,在C和C ++的狂野时代,非布尔表达式在if语句中都没问题,所以没有区别,除非你犯了一个经典的程序员错误而忘了等号:

employee = null

会编译,但

null = employee 

不会。

这在Java中无关紧要,因为Employee类型不是布尔值,而编译器(而不是语法)阻止您自己开始拍摄;但是那些写这篇文章的人可能是他们写C的时候的习惯。

答案 1 :(得分:1)

没有区别。只是编写操作数的不同顺序。我个人更喜欢第二个。

答案 2 :(得分:0)

没有区别,两者在返回结果方面都是相同的。但我更喜欢

return (employeeName == null ? "": employeeName); 

答案 3 :(得分:0)

这很常见,而且不一样。

//This is safe against null employeeName:  
return ("".equals(employeeName) ? "": employeeName);


return (employeeName.equals("") ? "": employeeName);

答案 4 :(得分:0)

两者都是一样的,没有区别。

答案 5 :(得分:0)

有一个经典的编码标准,在对常量和变量或文字和变量进行任何比较时,常量/文字应该在左侧。

因此,当您想要检查status是否为COMPLETE时,建议您这样做:

if("COMPLETE".equals(status))
{
}

这里的优点是不需要对状态进行空检查。执行正常方式:如果状态为null,if(status.equals("COMPLETES"))将抛出NullPointerException

在我看来,这更像是一种编程风格。即使使用额外的空检查,我发现 normal 方式更具可读性:

if(status != null && status.equals("COMPLETES"))

一个好的单元测试套件无论如何都应该找到缺少的空检查。