2014-09-17 2 views
3

В чем разница между null!=variable и variable!=null Какой метод идеально подходит для использования?Разница между нулем! = Переменная и переменная! = Null

if ((null != value1) || (null != value2) || (null != value3)) { 
      ....... 
      ....... 
      ....... 
} 

или

if ((value1 != null) || (value2 != null) || (value3 != null)) { 
       ....... 
       ....... 
       ....... 
} 

Пожалуйста, предложите лучший вариант и логическое изменение между этим?

+3

Нет разницы. В прежние времена, возможно, еще и сегодня ;-), 'constant! = X' часто рекомендуется на таких языках, как C. Это называлось [Yoda Conditions] (http://en.wikipedia.org/wiki/Yoda_conditions) и помогли избежать таких случаев, как 'x = constant', поскольку' constant = x' поднимет ошибку компилятора. (Тем не менее, в Java единственный случай, когда это имеет значение, когда вы делаете сравнение с 'boolean', которого следует избегать в любом случае.) – user2864740

+0

Я видел коды, сравнивающие значение null с переменной, поэтому я задал этот вопрос. – JayKay

+0

Ну, вы должны убедиться, что выражение * не * null, прежде чем метод будет вызван на него, - чтобы не был поднят NPE. Однако не имеет значения, является ли оно «null! = X» или «x! = Null».Выберите один и * быть последовательным * (что также означает следующую форму, уже использованную в проекте). – user2864740

ответ

5

Без разницы.

Но люди часто пишут «abc» .equals (foo) вместо foo.equals («abc»), чтобы исключить исключение из null-точки.

3

Ничего особенного.

Я предпочитаю value != null по соображениям чистоты.

1

Как уже упоминалось нет разницы, но я не натыкался на то, что это

null != value2 

Я всегда вижу, как значение2! = Утратившим как thihara сказал его более легким для чтения. Я думаю, что это тоже хорошо, чтобы сохранить это значение! = Null для начинающих программистов, которые могли бы пройти через некоторые из них, может немного потеряться в концепции, хотя нет никакой разницы.

1

null != value является удерживающим более из C. В C, ваш код будет скомпилирован без предупреждения таким образом: if (variable = null) (это неверный код), в то время как на самом деле вам, вероятно, имел в виде if (variable == null).

Но в Jave оба этих двух стиля в порядке.

2

Оба способа сравнения правильны. Логически нет разницы, но программисты предпочитают использовать значение! = Null.

1

В уступке C выглядит аналогично сравнения:

lvalue = rvalue; 
lvalue == rvalue; 

lvalues ​​(переменные) могут быть назначены. rvalues ​​могут быть выражениями. Null не может быть присвоен, поэтому, если вы придерживаетесь использования null в качестве значения lvalue в сравнении, тогда компилятор будет улавливать ошибку второго знака равенства в заявлении, таком как

null = rvalue;

Где вы можете случайно присвоить нуль с:

именующей = NULL;

Смежные вопросы