简体   繁体   中英

Why does a null value appear in string output?

When I execute the following code the output is "nullHelloWorld". How does Java treat null?

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String str=null;
        str+="Hello World";
        System.out.println(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).

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.

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

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

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