1. 程式人生 > >java中對null值的處理

java中對null值的處理

今天和朋友在群裡交流 碰見一個問題  

java中 null+"a" =nulla;  很詭異的問題

網上查了查 ,一些懂得java原始碼的大神給了些解釋;

這不是JVM的作用是Java編譯器把這段重構了,反編譯一下就看得出是

      new java.lang.StringBuilder [16]
       dup
       aload_1 [str1]
       invokestatic java.lang.String.valueOf(java.lang.Object) : java.lang.String [18]
      invokespecial java.lang.StringBuilder(java.lang.String) [24]

看得出跟下面是一樣的

 new StringBuilder(
        String.valueOf(str1)
        );

而你在看String.valueOf方法是這樣的

public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }
。因此Stringbuilder 最終構造的是一個 "null"字串