これは本当のばかな質問のように聞こえるが、私と一緒に負担してください:) かもしれないので、私は私がmsgBO.getEmpId().equals(null) == false
として上記の文を作れば私の質問は、それは何の違いになるだろう、あるif ((msgBO.getEmpId().equals("") == false)) { // do something }
のような私のコード内の条件ならば持っていますまたはこのように私は2つの異なることを比較しようとしていますか?ヌル比較
ヌル比較
答えて
はい、""
(空文字列)とnull
(文字列なし)の間に大きな違いがあります。
任意のオブジェクト参照はnull
を指すことができます。これは「データなし」または「何もない」を表します。空の文字列""
は、長さのない文字列を表します。
この例は以下の通りである。
String one = null;
String two = "";
int oneLength = one.length();
int twoLength = two.length();
length
への最初の呼び出しはNullPointerException
がスローされます。そして、2番目は0
を返します。
null
リファレンスと長さ0の文字列は、Javaでは全く異なる2つのものです。他の二つの点:
getEmpId
であるいずれかのメソッド呼び出しまたは一般(この場合と悪い命名)眉をひそめている公共の場、のためにブレースが欠落ゲッター方法。getEmpId
場合/null
を返している、TEHそれにequals()
を呼び出すとNullPointerException
をcausます - リテラル文字列を比較するとき、あなたが比較を逆にすべき理由である:==
を使用して明示的にブール式を比較すると、if("foo".equals(variable))
- は醜いです。代わりに、あなたは否定を使用することができます:あなたが欲しいものを
if(!msgBO.getEmpId.equals(""))
またはif(!msgBO.getEmpId != null)
ちょっとマイケル、getEmpIdはゲッターです。 getEmpId()。入力ミスを申し訳ありません。より良いコーディング方法を指摘してくれてありがとう。 – t0mcat
彼らは異なっているが、他のケース
こんにちは学習は、私はあなたが、私は単にオブジェクトがこれまで... JSONの連中にそれを伝えるヌルに等しい比較することが許されないので、空の文字列 – t0mcat
それが違いを生むんため
msgBO.getEmpId == null
です。
msgBO.getEmpId.equals("")
はnull
値とmsgBO.getEmpId
比較空String
msgBO.getEmpId.equals(null)
とmsgBO.getEmpId
を比較します。 がnull
の場合、NullPointerException
をスローするため、これは間違っています。値がnullかどうかを確認する場合は、代わりにmsgBO.getEmpId == null
というような条件を使用する必要があります。
この状況で正しいのは、msgBO.getEmpId
によって返される値のタイプによって異なります。 String
でない場合は、null
としか比較できません。それがString
の場合、両方の値に意味がある場合があり、それはmsgBO.getEmpId
の空の値をどのように表しているかによって異なります。この場合、あなたはnull
と比較する必要があり、空の値のためnull
を使用している場合、あなたは空の値のため""
を使用する場合は、""
と比較する必要があります。
あなたは2つの異なることを比較しようとしています。それでも動作するかもしれませんが、空の文字列をチェックしていて、変数がnullかどうかを調べています。
も速く文字列が空であるかどうかを確認するだけで
if (string.length == 0).
をチェックすることです(あなたは、例外が発生します文字列がnullの場合、しかし、そうはnullチェック場合はこれをしません、キャッチされた例外でnullの場合を処理しない限り)。
これは別のものです。
msgBO.getEmpId.equals(null) == false
別名
!msgBO.getEmpId.equals(null)
が常に成功することが保証され、テスト特に、(関与equals
方法は、ルールの標準セットに応じて書き込まれる場合、少なくとも、)いかなる目的はこれまでないのでnull
に等しいとすることができ:null以外の参照値xについて
について、x.equals(ヌル)がfalseを返すべきです。あなたが既に知っている場合
だから、他の言葉では、msgBO.getEmpId != null
ことを、あなたはまた、equals
への呼び出しの結果を知っています。 msgBO.getEmpId != null
がわからない場合は、equals
に電話すると、NullPointerException
が発生するのを待っています。ですから、人はしばしば見ている:
msgBO.getEmpId != null && msgBO.getEmpId.equals("...stuff...")
あるいは
"...stuff...".equals(msgBO.getEmpId)
>>の代わりにnullをチェックするために、右必要があると思います:)...と技術的に言えば、equals(Object)がtrueを返すようにすることができます。あなたは奇妙なことをすることができます/任意の不適切なimpl。 hashCode/equalsの – bestsss
- 1. C言語でのヌル比較
- 2. 比較する2つのヌルnullables
- 3. ヌル値とヌル値がない場合の列値の比較
- 4. 最後にヌルを持つコレクションの比較器
- 5. VARCHARとCHARとの間にSQL Serverのヌルの比較
- 6. Hibernate HQLはタイムスタンプとヌルを比較します
- 7. Groovyでヌルと数値を比較する
- 8. 比較リストを比較して比較する
- 9. SQL比較でNULLを比較する
- 10. TFS/VSの比較/比較ツール
- 11. 比較条件と比較条件
- 12. クエリー間の比較行の比較
- 13. データベーススキーマの比較 - SQLオブジェクトの比較
- 14. ペアワイズ比較のみ比較R
- 15. PostgreSQL - INSERT INTOパフォーマンス比較の比較
- 16. ファイル比較.class Bejond比較4
- 17. 比較
- 18. 比較
- 19. 比較
- 20. 比較
- 21. Comparatorでヌル比較メソッドの引数を処理する方法は?
- 22. Datetimeの値をCのヌルまたは特定のテキストと比較する#
- 23. オブジェクトはどのようにヌルと比較されませんか?
- 24. サイズ比較
- 25. ブラウザリサイズ比較ステートメント
- 26. のJava - 比較
- 27. SIPスタック比較
- 28. テーブルの比較
- 29. のMySQL:比較
- 30. エクセル比較式
を私はgetEmpIdを推測している()文字列を返しますか? – James
こんにちはジェームズ、はいそれは文字列を返します。 – t0mcat