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()吧?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【lord_is_layuping】截止到2008-06-25 21:27:07的历史汇总数据(不包括此帖):
    发帖数:116                发帖分:2231               
    结贴数:101                结贴分:2231               
    未结数:15                 未结分:0                  
    结贴率:87.07 %            结分率:100.00%            
    楼主加油
      

  2.   

    1、对null对象,调用任意方法都报错,所以System.out.println(s1.toString());出现空指针异常
    当然null作为参数不考虑在内
    2、toString()
    是Object类的方法,而所有类都继承自Object,所以System.out.println(s2.toString());
    是调用s2.toString()
      

  3.   

    看看源代码就清楚了,如下:
        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();
        }
    明白了?
      

  4.   

    这跟调用不调用toString()有什么关系
    第一次初始化为null,连内存空间都没给它分配,它上哪调用toString()?