我对空检查的编码标准有疑问。 我想知道
之间的区别if(a!=null)
和
if(null!=a)
哪一个更好,哪一个使用,为什么?
答案 0 :(得分:8)
没有区别。但第一种更常见。第二个也被称为“尤达条件”,因为它不自然的“语法”。
一旦我在一个编码指南要使用if (null != a)
的项目中工作,因为他们认为开发人员更容易理解常量值必须始终排在第一位(如CONSTANT_VALUE.equals(variable)
那对我来说很烦人。
答案 1 :(得分:8)
两者在Java中都是相同的,因为只有布尔表达式可以在if中。这只是程序员的编码风格偏好,大多数都使用null != a
。
null != a
是Java,C ++等编程语言中的旧练习(称为 Yoda条件)。
因为写if (a = null)
并意外地将null
分配给a
是有效的,所以首先写null
是警卫阻止此事故发生点。
答案 2 :(得分:2)
他们都是一样的。这取决于你的编码风格。
答案 3 :(得分:1)
从编译器的角度来看,它们完全相同。但是第一种形式更具可读性,所以我建议你使用那种形式。
答案 4 :(得分:1)
如果声明基于表达结果而起作用,那么它们之间没有区别
所以你写if(a!=null)
或if(null!=a)
会产生真或假,然后评估结果。
所以你写下你喜欢的内容并不重要
答案 5 :(得分:1)
它们都是一样的。虽然第一个变体是常见的,但如果您知道第一个变量不为空
,则第二个变体很有用示例"some value".equals(your_variable)
,某些值可以是您知道的非空值。当your_variable
为null
时,这将避免NPE。
String str = "somevalue";
if(str != null && str.equals("somevalue")) { }
if("somevalue".equals(str)) { }
如果str
为null
,则两个条件都相同。