StringBuilder.append(null)發生的奇怪事情

最近Coding, 發現一個bug,沒有按照預期走到指定分支,意外發現StringBuilder.append(null)的奇怪事情

在這裏插入圖片描述

StringBuilder.append(null);
然後判斷 StringBuilder的內部狀態,是否爲空,按照常識,應該是 空 纔對,然後真實的結果如下所示

在這裏插入圖片描述

太奇怪了,StringBuilder.append(null); 結果 StringBuilder裏面 既不是null值也不是空串,而是 4個char字符長度,這是啥情況?!

判斷 StringBuilder裏面的值是否和 “null” 相等,居然是相等的。

刷新了常識,這就應該追本溯源了,看看源碼再說:

StringBuilder.append()方法,繼承了super.append()方法,不急,繼續看
在這裏插入圖片描述

原來在這裏判斷了接收的 str是否爲null, 並且返回了一個奇怪的值
在這裏插入圖片描述

看看它做了什麼操作

在這裏插入圖片描述

恍然大悟,原來返回了 “null” 這四個字符 ,原來append(null), 最終的結果是 append了一個 “null” 字符串。

小結

下次使用StringBuilder.append()的時候,在append之前記得先判斷下加入的String是否爲null,小記一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章