Да, это приведет к такому же результату.
Чтобы быть немного более конкретно:
- Если
str1
не нуля, это точно то же самое, так как он просто проходит через тройную проверку с тем же выражением, как и до
- Если
str1
is null, тогда будет проверка, если str2
is также null.
И так как у вас есть полное тернарное выражение, обернутое фронтом !
, которое ведет себя так же, как раньше.
Если вы хотите быть немного более ясным, вы могли бы сделать str2==null
в реальное сравнение между str1
и str2
: str1==str2
. Поскольку одно из значений уже null
, не имеет значения, что это референтная проверка вместо правильной проверки равенства строк и в конечном итоге становится более понятной в коде (для меня, так или иначе)
Как и другие отметили, однако, что библиотека Apache Commons уже включает в себя эту нуль-безопасную возможность равенства, но для этого требуется довольно существенное включение библиотеки. С другой стороны, многие считают, что функциональность Apache Commons должна эффективно рассматриваться как часть самой Java, поэтому вы можете сами решить, хотите ли вы дополнительной зависимости.
Наконец, функциональность не технически эквивалентны, так как метод по умолчанию .equals()
выбросит NullPointerException
, в то время как ваш код проверки равенства не будет. Если это то поведение, которое вы искали (я полагаю, что это так), тогда вы в порядке, но это то, о чем нужно знать.
Зависит от того, как вы представляете, что нулевая проверка обрабатывается в бит кода, который находится прямо у вас в голове. –
Если 'str1' является' null', то если вы будете делать 'str1.equals();' вы получите 'NullPointerException'. Подробнее см. Http://stackoverflow.com/questions/2601978/how-to-check-if-my-string-is-equal-to-null – Vyoma
Ваше состояние выглядит хорошо. Вы можете переписать его как 'if (str1 == null? Str2! = Null:! Str1.equals (str2))', который может быть проще читать. – NullUserException