0
if(status.equals(null))
{
  status="Pass";
}

上記のコードから をスローします。NullPointerException値を と比較するための解決策を教えてくださいnull

4

7 に答える 7

6

statusそれ自体はのようですnull。だからあなたがするとき:

status.equals("null")

あなたは実際にやっています:

null.equals("null")

これがNPEを引き起こします。やったほうがいい:

if(status == null) //Now you're checking if the reference is null
                   //So you'll never dereference a null pointer

このリンクは役に立つかもしれません。


関連トピック:

Javaのnullとは何ですか?
.equals() の代わりに == を使用する理由を Java null チェック

于 2013-07-25T05:50:57.377 に答える
2

Java では"null"文字列です。参照を null と比較したい。以下をせよ:

if(status == null){
  // code here
}
于 2013-07-25T05:52:44.283 に答える
2

String は Java のクラスであることに注意してください。そのため、ユニット化されたオブジェクト (null オブジェクト) を使用してメソッドを呼び出すたびに、スローされます。あなたの場合、初期化されていないNullPointerException可能性があります。String status.
ところで、メソッドnull を使用せずにチェックequals()する必要があります。これは、null オブジェクトのメソッドの null 値をチェックしていることは意味がないためです。
あなたはこのようにしなければなりません

if(status == null)
//Do something


String を比較したい場合にのみ equals メソッドを使用し、静かな段階で String が初期化されていることを確認します。初期化されString status = "";た String であり、現在は null ではありません。使用中
の情報については、代わりにlike を使用してみてください。 like を使用すると、null 文字列の場合により安全になり、
equals()"anyValue".equals(status)status.equals("anyValue")"anyValue".equals(status)NullPointerException

于 2013-07-25T05:53:44.240 に答える
0
if(status.equals("null")) //Just checking if string content/value is same
{
status="Pass";
}

これにより、ステータス変数の値(コンテンツ)が「null」文字列かどうかを確認するだけです。nullチェックを行いたい場合は、次のことを行う必要があります

if(null == status)
{
status="Pass";
}
于 2013-07-25T05:55:08.767 に答える
0

「null」として null にすることは想定されていません。あなたの場合、コンパイラはそれを文字列と見なします。

if(stringVariable!=null)
{
    //ur Code
}

(また)

if(stringVariable.equals(null))
{
    //Ur code
}

文字列配列を使用している場合は、次のように実行できます

if(stringArray.isEmpty())//checks length of String array 
{
//ur code
}
于 2013-07-25T05:59:33.330 に答える
0

null で .equals を使用することはできません。使用する :

if(status == null) {
//Do something 
}

これがまさに、HashMap が複数の null 値を格納できない理由です。キーは常に他の値と比較され、2 回目に null が入力されると NPE がスローされるためです。

于 2013-07-25T06:00:58.530 に答える