华为笔试题
String s =
null;
s +=
"abc";
System.
out.println(s);
答案是nullabc!
运行时, 两个字符串str1, str2的拼接首先会调用 String.valueOf(obj),这个Obj为str1,而String.valueOf(Obj)中的实现是return obj == null ? “null” : obj.toString(), 然后产生StringBuilder, 调用的StringBuilder()构造方法, 把StringBuilder初始化,长度为16,并且调用append(str1)! 接下来调用StringBuilder.append(str2), 把第二个字符串拼接进去, 然后调用StringBuilder.toString返回结果!
所以那道题答案的由来就是StringBuilder.append(“null”).append(“abc”).toString();
参考文献 剖析java中的String之__拼接