我今天看到了这段代码,想知道
之间是否存在差异return (null==employeeName ? "": employeeName);
和
return (employeeName == null ? "": employeeName);
答案 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"))
一个好的单元测试套件无论如何都应该找到缺少的空检查。