8

私のプロジェクトでは、null変数をチェックするためにifnelse条件を使用する必要があります

String stringValue = null;
String valueOf = String.valueOf(stringValue);

でも状態をチェックすると

  if (valueOf == null) {
        System.out.println("in if");
    } else {
        System.out.println("in else");
    }

次に、出力は「in else」ですが、なぜこれが発生しているのですか?

4

2 に答える 2

14

これがのソースコードですString.valueOf:-

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

ご覧のとおり、null値の場合は文字列を返し"null"ます。

それで、

String stringValue = null;
String valueOf = String.valueOf(stringValue);

"null"に文字列を与えますvalueOf

同様に、次の場合:-

System.out.println(null + "Rohit");

あなたが得るでしょう:-

"nullRohit"

編集

もう一つの例:

Integer nulInteger = null;
String valueOf = String.valueOf(nulInteger) // "null"

しかし、この場合。

Integer integer = 10;
String valueOf = String.valueOf(integer) // "10"
于 2012-11-27T05:29:03.240 に答える
2

実際には、valueOf()メソッドの実装を見ることができます。あなたはその時何が起こったのかを知るでしょう。

JDK 1.5では、そのコードは次のようになります。

public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}

コードから、オブジェクトがnullの場合、「null」値を含むnull以外の文字列が返されることがわかります。これは、valueOfオブジェクトがnullではないことを意味します。

于 2012-11-27T05:31:54.633 に答える