java中對null值的處理
阿新 • • 發佈:2019-02-08
今天和朋友在群裡交流 碰見一個問題
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"字串