1

我对空检查的编码标准有疑问。我想知道两者的区别

if(a!=null)

if(null!=a)

哪个更好,使用哪个,为什么?

4

6 回答 6

8

没有区别。但第一种更为常见。第二个也被称为“尤达条件”,因为它不自然的“语法”。

有一次我在一个项目中使用编码指南,if (null != a)因为他们认为开发人员更容易理解常量值必须始终放在第一位(如CONSTANT_VALUE.equals(variable). 这对我来说很烦人。

于 2013-03-20T08:54:22.643 回答
8

两者在 Java 中是相同的,因为只有布尔表达式可以在 if 中。这只是程序员的一种编码风格偏好,他们中的大多数人使用null != a.

这是Java、C++ 等编程语言(称为Yoda 条件null != a中的一种古老做法。 因为它是有效的,并且不小心分配给了所以写首先是一个防止这种事故发生的后卫
if (a = null)nullanull

于 2013-03-20T08:57:23.327 回答
2

他们都是一样的。这取决于您的编码风格。

于 2013-03-20T08:54:30.287 回答
1

从编译器的角度来看,它们完全相同。但是第一种形式更具可读性,所以我建议你使用那个形式。

于 2013-03-20T08:58:07.510 回答
1

如果语句基于表达式的结果起作用,则它们之间没有区别,因此您编写if(a!=null)if(null!=a)将产生真或假,然后评估结果。

所以不管你写你喜欢哪个

于 2013-03-20T09:01:26.773 回答
1

他们都是一样的。尽管第一个变体很常见,但如果您知道第一个变量不为空,则第二个变体很有用

例如"some value".equals(your_variable),某个值可以是您知道不为空的任何值。your_variable这将在is时避免 NPE null

String str = "somevalue"; 

if(str != null && str.equals("somevalue")) { }

if("somevalue".equals(str)) { }

str无论是null与否,这两个条件都将相同。

于 2013-03-20T09:02:55.860 回答