Java笔记1 - System.out.println(this)

    在Java中,所有的对象都是继承自Object,自然继承了 toString 方法,在当使用 System.out.println() 方法,里面为一个对象的引用时,自动调用 toString 方法将对象打印出来,而如果重写了 tostring 方法则调用重写的toString方法。

    因为 System.out.println() 的这个方法源码中调用了 String.valueOf(Objec o)

public void println(Object x) {
   String s = String.valueOf(x);
   synchronized(this) {
       print(s);
       newLine();
   }
}

  而 String.valueOf(x) 的源码就是去调用该对象的 toString() 方法,源码如下:

public static String valueOf(Object obj) {
        return (obj ==null) ? "null" : obj.toString();
    }


 对于 System.out.println(this)

this是这个类的引用, 比如说

class  A{
    public void run(){ 
        System.out.println(this);
    }
     
    public String toString() {
        return "hello";
    }
}


 那么 System.out.println(this) 将打印A类自身引用的toString方法,如列,打印hello 如果自身没有实现,则打印的是父类ObjecttoString方法;getClass().getName() + "@" +Integer.toHexString(hashCode());  打印的是类名@hascode”







  


版权声明:本文为qq_40395278原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。