简体   繁体   中英

what is difference between null and “null” of String.valueOf(String Object)

in my project ,Somewhere I have to use if n else condition to check the null variables

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

but when i check the condition like

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

then output is "in else" ,why this is happening?

Here's the source code of String.valueOf : -

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

As you can see, for a null value it returns "null" string.

So,

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

gives "null" string to the valueOf .

Similarly, if you do: -

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

You will get: -

"nullRohit"

EDIT

Another Example:

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

But in this case.

Integer integer = 10;
String valueOf = String.valueOf(integer) // "10"

Actually, you can have a look at the implementation of the method: valueOf(). You will know what happened then.

In JDK 1.5, its code is like this:

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

From the code, you can see that if the object is null it will return a not null string with "null" value in it, which means the valueOf object is not null.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM