Why does a null value appear in string output?

后端 未结 4 1148
旧时难觅i
旧时难觅i 2020-12-04 02:49

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         


        
相关标签:
4条回答
  • 2020-12-04 03:01

    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

    0 讨论(0)
  • 2020-12-04 03:09

    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).
    0 讨论(0)
  • 2020-12-04 03:11

    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
    
    0 讨论(0)
  • 2020-12-04 03:20

    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.

    0 讨论(0)
提交回复
热议问题