This is a follow-up question to some previous questions about String initialization in Java.
After some small tests in Java, I'm facing the following question:
Why can I execute this statement
String concatenated = str2 + " a_literal_string";
when str2
a String
object initialized to null
(String str2 = null;
) but I cannot call the method toString()
on str2
? Then how does Java do the concatenation of a null String object and a string literal?
By the way, I tried also to concatenate an Integer initialized to null and the string literal "a_literal_string"
and I've got the same thing that is "null a_literal_string"
in the console. So whichever kind of null gives the same thing?
PS : System.out.println(concatenated);
gives null a_literal_string as output in the console.
To concatenate null to a string, use the + operator. Let's say the following is our string. String str = "Demo Text"; We will now see how to effortlessly concatenate null to string.
String literalsThe code concatenates the smaller strings to create the long string literal. The parts are concatenated into a single string at compile time.
When SET CONCAT_NULL_YIELDS_NULL is ON, concatenating a null value with a string yields a NULL result. For example, SELECT 'abc' + NULL yields NULL .
There are two ways to concatenate strings in Java: By + (String concatenation) operator. By concat() method.
This line:
String concatenated = str2 + " a_literal_string";
is compiled into something like
String concatenated = new StringBuilder().append(str2)
.append(" a_literal_string")
.toString();
This gives "null a_literal_string"
(and not NullPointerException
) because StringBuilder.append
is implemented using String.valueOf
, and String.valueOf(null)
returns the string "null"
.
I tried also to concatenate an Integer initialized to null and the string literal "a_literal_string" and I've got the same thing
This is for the same reason as above. String.valueOf(anyObject)
where anyObject
is null
will give back "null"
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With