Который является более эффективным: если (пустой указатель == переменная) или если (переменная == пустой указатель)? [дубликат]

Этот вопрос уже имеет ответ здесь:

В Java, который будет более эффективным, и каковы различия?

if (null == variable)

или

if (variable == null)
41
задан Sildoreth 15 April 2015 в 16:43
поделиться

8 ответов

(Подобно этому вопросу: Разница между 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);
67
ответ дан 27 November 2019 в 00:10
поделиться

Никакой разницы.

if (variable == null) - это (имо) лучший стиль программирования.

Обратите внимание, что null в Java строчный.

16
ответ дан 27 November 2019 в 00:10
поделиться

нет разницы

(null == переменные) иногда использовался в старые добрые времена (язык C) чтобы избежать написания: (переменная = NULL) по ошибке

12
ответ дан 27 November 2019 в 00:10
поделиться

Краткий ответ: без разницы.

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

Хорошо спроектированный язык в сочетании с хорошим компилятором и инструментами статического анализа, паранойя может быть сведена к минимуму, поэтому вы должны писать максимально читаемый и естественный код, который будет константой справа.

Связанные вопросы

Воспользуйтесь функцией поиска в следующий раз.

8
ответ дан 27 November 2019 в 00:10
поделиться

Мое мнение: Не заботьтесь о столь незначительных оптимизациях производительности. Если у вас плохая производительность, найдите и устраните реальные проблемы/узкие места в вашем коде.

1
ответ дан 27 November 2019 в 00:10
поделиться

Нет любая разница。

-1
ответ дан 27 November 2019 в 00:10
поделиться

Это называется "Условия Йоды", и их цель - предотвратить случайное использование присваивания (=) вместо проверки равенства (==).

18
ответ дан 27 November 2019 в 00:10
поделиться

Первый - это заимствование из языка C, где совершенно законно писать if(variable = NULL)

7
ответ дан 27 November 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: