Первые два эквивалентны, но «null! = Object» - это старая практика из языков, где допустимо написать «if (object = null)» и случайно присвоить объекту null. Это охрана, чтобы предотвратить эту аварию.
Второй эквивалент пока имеет дополнительное преимущество, заключающееся в том, что если "something" имеет значение null, вы не получите исключение нулевой ссылки, тогда как если бы вы это сделали: something ".equals (" ").
Нет абсолютно никакой разницы ни в семантике, ни в производительности.
==
в этом случае является операцией ссылочного неравенства; он никогда не может выбросить NullPointerException
.
JLS 15.21.3 Операторы эталонного равенства == и! =
Если операнды оператора равенства относятся либо к ссылочному типу, либо к нулевому типу, тогда операция является равенством объектов.
Результатом
! =
будетложь
, если оба значения операнда равныnull
или оба относятся к одному и тому же объекту или массиву; в противном случае результат будетистинным
.
Используйте то, что наиболее читается. Обычно это что-то! = Null
.