锁定老帖子 主题:一眼能说出它的结果
精华帖 (1) :: 良好帖 (0) :: 隐藏帖 (10)
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-30
本王也悲剧了,本王也认为是:hello word
|
|
返回顶楼 | |
发表时间:2012-03-30
hoarhoar 写道 我一眼就料到了结果,我给大家分析一下:
String s = null; s = s+"word"; //在这一步先对s转字符串,如果s是对象,调用toString(),如果是null,转字符串就是"null",与"word"相加就是nullword 嘱咐一点,在java中运算顺序:从左向右。 也就是s = s+"word"; 等价于 s = String.valueOf(s)+"word"; Integer,Double都一样的。。 |
|
返回顶楼 | |
发表时间:2012-03-30
最后修改:2012-03-30
其实是这样的:
String s = null; s = (new StringBuilder(String.valueOf(s))).append("word").toString(); System.out.println((new StringBuilder("hello ")).append(s).toString()); 不明白的可以看一下http://moyunyu.iteye.com/blog/1455239 |
|
返回顶楼 | |
发表时间:2012-03-31
应该是编译不通过。
String [] args |
|
返回顶楼 | |
发表时间:2012-03-31
hoarhoar 写道 我一眼就料到了结果,我给大家分析一下:
String s = null; s = s+"word"; //在这一步先对s转字符串,如果s是对象,调用toString(),如果是null,转字符串就是"null",与"word"相加就是nullword 嘱咐一点,在java中运算顺序:从左向右。 对,需要看java的io的源码,看了printStream就知道为什么了 |
|
返回顶楼 | |
发表时间:2012-03-31
s = s+"word";
加之前要toString的,结果是nullword |
|
返回顶楼 | |
发表时间:2012-03-31
word? world ?
|
|
返回顶楼 | |
发表时间:2012-03-31
看看String中的代码,我贴出来了,答错的对着答案面壁
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } |
|
返回顶楼 | |
发表时间:2012-03-31
最后修改:2012-03-31
s=null 是占一个地址。
s=null+"world" 也占是一个地址 所以 是 hello null world |
|
返回顶楼 | |
发表时间:2012-03-31
hello nullword!
s = null; s += "hello"; 类 这的null是一个对象,然后s += "hello",当s与"hello"不是一对象时,会把null转为字符串。 |
|
返回顶楼 | |