はい、同じ結果になります。
もう少し具体的に言うと:
- null で
str1
ない場合は、前と同じ式に 3 項チェックを通過するだけなので、まったく同じです。
str1
がnull の場合、もstr2
null かどうかを確認するためのチェックになります。
三項式全体が out front でラップされている!
ため、これは以前と同じように動作します。
もう少し明確にしたい場合は、と:str2==null
を実際に比較することができます。値の 1 つが既にであるため、それが適切な文字列等価チェックではなく参照チェックであることは問題ではなく、コードでもう少し明確になります (とにかく、私には)str1
str2
str1==str2
null
ただし、他の人が言及したように、Apache Commons ライブラリには、このヌルセーフの等価機能が既に含まれていますが、かなりのライブラリを含める必要があります。一方、Apache Commons の機能は効果的に Java 自体の一部と見なされるべきであると多くの人が感じているため、追加の依存関係が必要かどうかは自分で決めることができます。
最後に、機能は技術的に同等ではありません。デフォルトの.equals()
メソッドは をスローNullPointerException
しますが、同等性チェック コードは をスローしません。それがあなたが探していた動作である場合 (私はそうだと思います)、問題ありませんが、注意が必要です。