Этот вопрос уже имеет ответ здесь:
В Java, который будет более эффективным, и каковы различия?
if (null == variable)
или
if (variable == null)
(Подобно этому вопросу: Разница между null == object и object == null )
Я бы сказал, что нет абсолютно никакой разницы в производительности между ними два выражения.
Тем не менее, что интересно, скомпилированный байт-код (в том виде, в котором он создается OpenJDKs javac) выглядит немного по-разному для этих двух случаев.
Для логического b = переменная == null
:
3: aload_1 // load variable
4: ifnonnull 11 // check if it's null
7: iconst_1 // push 1
8: goto 12
11: iconst_0 // push 0
12: istore_2 // store
Для логического b = null == переменная
:
3: aconst_null // push null
4: aload_1 // load variable
5: if_acmpne 12 // check if equal
8: iconst_1 // push 1
9: goto 13
12: iconst_0 // push 0
13: istore_2 // store
Как говорит @Bozho, переменная == null
является наиболее распространенным, используемым по умолчанию и предпочтительным стилем.
Однако в определенных ситуациях я обычно помещаю ноль
впереди. Например, в следующем случае:
String line;
while (null != (line = reader.readLine()))
process(line);
Никакой разницы.
if (variable == null)
- это (имо) лучший стиль программирования.
Обратите внимание, что null
в Java строчный.
нет разницы
(null == переменные)
иногда использовался в старые добрые времена (язык C)
чтобы избежать написания:
(переменная = NULL)
по ошибке
Краткий ответ: без разницы.
Более длинный ответ: есть стилистические различия, которые весьма субъективны. Некоторые люди утверждают, что константы должны быть слева в качестве защитного стиля на случай, если вы неправильно набрали ==
в =
. Некоторые люди утверждают, что константы должны быть правильными, потому что они более естественны и удобочитаемы.
Хорошо спроектированный язык в сочетании с хорошим компилятором и инструментами статического анализа, паранойя может быть сведена к минимуму, поэтому вы должны писать максимально читаемый и естественный код, который будет константой справа.
Воспользуйтесь функцией поиска в следующий раз.
Мое мнение: Не заботьтесь о столь незначительных оптимизациях производительности. Если у вас плохая производительность, найдите и устраните реальные проблемы/узкие места в вашем коде.
Это называется "Условия Йоды", и их цель - предотвратить случайное использование присваивания (=
) вместо проверки равенства (==
).
Первый - это заимствование из языка C, где совершенно законно писать if(variable = NULL)