浏览 3115 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-05-07
一个为null的字符串被println出来会是什么呢。 public static void main(String[] args) { String s = null; System.out.println(s+"aaaa"); } 输出是“nullaaaa” 这是为什么呢,String未被初始化是不可能成为“null”的,因为它是null的。 翻看了一下PrintStream,发现在他打印的时候做了马脚,源码是这样子的 public void print(String s) { if (s == null) { s = "null"; } write(s); } 还有一个附加的问题是如果打印s+s会发生什么情况,两个null变量相加被打印,首先执行的是相加,查看反编译的Java代码知道是执行了StringBuilder的append方法,我们查看源码 public AbstractStringBuilder append(String str) { if (str == null) str = "null"; int len = str.length(); ensureCapacityInternal(count + len); str.getChars(0, len, value, count); count += len; return this; } 发现一样对null的字符串进行了特殊的处理。 PS:新浪SAE怎么这么不给力啊,我的网站上不去。http://www.liubey.org 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2013-05-11
我怎么觉得是+号的原因
|
|
返回顶楼 | |