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,小记一下。

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