Любая разница между этими сравнениями - PullRequest
0 голосов
/ 07 декабря 2011

Я видел этот тип условий

String s="something";

if(s != null){
statements;
}

и

if(!(s==null)){
statements;
}

есть ли различия при запуске кода.

Ответы [ 5 ]

4 голосов
/ 07 декабря 2011

Нет, оба утверждения абсолютно одинаковы.

2 голосов
/ 07 декабря 2011

Главное отличие в том, что второй не компилируется.Вам нужно

if(!(s == null))

, что совпадает с

if(s != null)

Унарные операторы имеют приоритет над бинарными, поэтому

if(!s == null)

похоже на

if((!s) == null)

, который тоже не компилируется.

1 голос
/ 07 декабря 2011

Они должны быть такими же, как компилятор достаточно умен для простой оптимизации, как эти.

0 голосов
/ 07 декабря 2011

Они одинаковы и генерируют одинаковый байт-код.

0 голосов
/ 07 декабря 2011

Первый из них будет делать «если s не равен нулю» (проверка неравенства), а второй - «если не s равен нулю» (проверка равенства, отрицание).

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...