Java 为什么";这";关键字print toString()到底在打印什么?

Java 为什么";这";关键字print toString()到底在打印什么?,java,this,tostring,Java,This,Tostring,为什么this关键字会准确打印toString方法正在打印的内容 public class A { public static void main(String[] args) { Stuff s = new Stuff("in",5 ); System.out.println(s); double doubleValue = 2.5 ; s.doSomething(doubleValue); System.out.print

为什么
this
关键字会准确打印
toString
方法正在打印的内容

public class A {
    public static void main(String[] args) {
      Stuff s = new Stuff("in",5 );
      System.out.println(s);

      double doubleValue = 2.5 ;
      s.doSomething(doubleValue);
      System.out.println(doubleValue);

      s = new Stuff("more", 3);
      String str = "word";
      System.out.println(s.changeSomething(str));
      System.out.println(s);
      System.out.println(str);
   }
}

class Stuff {
    private static final int n =2 ;
    private String string;
    private int num;

    public Stuff(String s, int num) {
        this.num = num;
        string = s;
    }

    public void doSomething(double d) {
        d = d * num;
        System.out.println(this);
    }

    public double changeSomething(String s) {
        s = string;
        return n * num;
    }

    public String toString() {
        return string + " has " + num;
    }
}
这是我得到的输出

in has 5
in has 5
2.5
6.0
more has 3
word

System.out.println
方法不知道如何输出自定义类型的实例,因此它可以做的下一件最好的事情是调用
toString
方法,该方法可用于Java中的所有对象并返回字符串表示。在本例中,您已经重写了它,因此它实际上执行您的
toString
方法并打印结果。

您可以阅读
System.out.println()的文档。
。是一个
打印流
。calls,它调用,如果引用为null,则返回字符串
“null”
;否则返回
obj.toString()

正如Martin所说,基本上
println(this)
只调用
toString()
方法并打印它。更多信息:哦,我不知道有这样一层间接寻址:-)。