When I execute the following code the output is \"nullHelloWorld\". How does Java treat null?
import java.util.*;
import java.lang.*;
import java.io.*;
/* N
Java treats null as nothing, it is the default value of a String. It appears in your String output because you use +=
to add "Hello World" to str
.
String str=null;
str+="Hello World";
System.out.println(str);
You are basically telling Java: give my str
variable the type of String
and assign it the value null
; now add and assign (+=
) the String
"Hello World" to the variable str
; now print out str
You are attempting to concatenate a value to null
. This is governed by "String Conversion", which occurs when one operand is a String
, and that is covered by the JLS, Section 5.1.11:
Now only reference values need to be considered:
- If the reference is null, it is converted to the string "null" (four ASCII characters n, u, l, l).
my two cent:
String str = null;
str = str.concat("Hello World"); // Exception in thread "main" java.lang.NullPointerException
but
str += "Hello World";
System.out.println(str); // Hello World
When you try to concat null
through +
operator, it is effectively replaced by a String
containing "null"
.
A nice thing about this is, that this way you can avoid the NullPointerException
, that you would otherwise get, if you explicitly called .toString()
method on a null
variable.