论坛首页 招聘求职论坛

一眼能说出它的结果

浏览 13965 次
精华帖 (1) :: 良好帖 (0) :: 隐藏帖 (10)
作者 正文
   发表时间:2012-03-30  
本王也悲剧了,本王也认为是:hello word
0 请登录后投票
   发表时间: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都一样的。。
0 请登录后投票
   发表时间: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
0 请登录后投票
   发表时间:2012-03-31  
应该是编译不通过。
String [] args
0 请登录后投票
   发表时间:2012-03-31  
hoarhoar 写道
我一眼就料到了结果,我给大家分析一下:
String s = null; 
s = s+"word";  //在这一步先对s转字符串,如果s是对象,调用toString(),如果是null,转字符串就是"null",与"word"相加就是nullword
嘱咐一点,在java中运算顺序:从左向右。

对,需要看java的io的源码,看了printStream就知道为什么了
0 请登录后投票
   发表时间:2012-03-31  
s = s+"word";

加之前要toString的,结果是nullword
0 请登录后投票
   发表时间:2012-03-31  
word? world ?
0 请登录后投票
   发表时间:2012-03-31  
看看String中的代码,我贴出来了,答错的对着答案面壁
   public static String valueOf(Object obj) {
	return (obj == null) ? "null" : obj.toString();
    }
0 请登录后投票
   发表时间:2012-03-31   最后修改:2012-03-31
s=null 是占一个地址。
s=null+"world" 也占是一个地址

所以 是 hello null world
0 请登录后投票
   发表时间:2012-03-31  
hello nullword!

s = null;
s += "hello";
类 这的null是一个对象,然后s += "hello",当s与"hello"不是一对象时,会把null转为字符串。
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics