Разница между нулем!= что-то и что-то!= ноль

Есть ли разница между null != something а также something != null на Яве. И если есть разница, то какой я должен использовать и почему?

7 ответов

Там нет разницы между null != something а также something != null, Вы должны думать о person.getName().equals("john") и "john".equals(person.getName()) Разница: первый бросит NullPointerException если getName() возвращается nullа второй не будет. Но это не относится к примеру вашего вопроса.

Вероятно, это происходит из так называемых условий йода, где вы пишете "bla" == myVariable вместо myVariable == "bla" потому что это может случиться случайно написать myVariable = "bla" который возвращает "bla" в некоторых языках, но также присваивает "bla" myVariable

Я просто хочу указать, что обоснование "условия Йоды" для этого (в таких языках, как C & C++) не применимо в данном случае (Java).

  1. Java не позволяет использовать общие выражения в качестве операторов, поэтому оба

     something == null;
    

    а также

     null == something;
    

    были бы ошибки компиляции.

  2. Типы something == null а также something = null разные; логический и некоторый ссылочный тип соответственно. В этом случае это означает, что оба:

     if (something = null) {
         ...
     }
    

    а также

     if (null = something) {
         ...
     }
    

    были бы ошибки компиляции.

На самом деле, я не могу придумать реалистичный пример, где null == something будет ошибка компиляции и something == null не будет. Следовательно, это ничего не дает с точки зрения защиты от ошибок.

С точки зрения производительности не будет никакой разницы, обе стороны оператора выполнены любым способом. Но для более читабельного кода второй кажется более читабельным

  obj.getSomething().getAnotherThing().doSomething() != null

  null != obj.getSomething().getAnotherThing().doSomething()

Но если вы собираетесь просто сравнить переменную или параметр, это более читабельно

  something != null

Конечно, это зависит от чувства читателя.

Разницы нет, но некоторые люди используют ее для удобства чтения в своем коде.

Они оба одинаковые, разницы нет.

В Java, если мы сравниваем любые, всегда мы должны размещать переменные слева, а значения - справа...

Другие вопросы по тегам