syso里怎么不调用toString()啊?String s1=null;
String s2="hello";
System.out.println(s1);//这里是调用s1.toString()吗?System.out.println(s1.toString());//报错了,好象并没有调用s1.toString()啊;
System.out.println(s2.toString());//不报错,应该是调用了s2.toString()吧?
String s2="hello";
System.out.println(s1);//这里是调用s1.toString()吗?System.out.println(s1.toString());//报错了,好象并没有调用s1.toString()啊;
System.out.println(s2.toString());//不报错,应该是调用了s2.toString()吧?
楼主【lord_is_layuping】截止到2008-06-25 21:27:07的历史汇总数据(不包括此帖):
发帖数:116 发帖分:2231
结贴数:101 结贴分:2231
未结数:15 未结分:0
结贴率:87.07 % 结分率:100.00%
楼主加油
当然null作为参数不考虑在内
2、toString()
是Object类的方法,而所有类都继承自Object,所以System.out.println(s2.toString());
是调用s2.toString()
public void println(Object x) {
String s = String.valueOf(x); //注意这行
synchronized (this) {
print(s);
newLine();
}
}
String.valueOf(Object obj) 的源代码:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
明白了?
第一次初始化为null,连内存空间都没给它分配,它上哪调用toString()?