`null`被视为String?

Vin*_*uri 6 java string nullpointerexception

String s = null;
s = s + "hai";
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)

输出:

nullhai
Run Code Online (Sandbox Code Playgroud)

以为这会让我觉得NPE.

什么是背后的基本逻辑

  • 使用+(连接)时不投掷NPE
  • 使用时扔NPE .

The*_*ind 4

对于 ,s = s + "hai"; 内部String.valueOf(null)将被调用。该方法将转换null"null".

字节码:

public static void main(java.lang.String[])   throws java.lang.Exception;
    0:   aconst_null
  //some code
   10:  invokestatic    #27; //Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;// check this line
// some other code
       27:  return
Run Code Online (Sandbox Code Playgroud)