当前位置:  开发笔记 > 编程语言 > 正文

println隐式调用Java方法....为什么?

如何解决《println隐式调用Java方法.为什么?》经验,为你挑选了2个好方法。

我有一个问题,为什么在main方法调用printPersonPrinting()方法时隐式调用toString()方法.

public class PersonPrinting {

    private String name;
    private int age;

    public PersonPrinting(String aName, int anAge) {
        name = aName;
        age = anAge;
    }

    public String toString() {
        return name + " " + age;
    }

    public void printPersonPrinting() {
        System.out.println(this);
    }

    public static void main (String [] args) {
        PersonPrinting p = new PersonPrinting("Dan",10);
        //printPersonPrinting is called, but toString isn't. 
       //But the output is formatted by toString method.
        p.printPersonPrinting();
    }
}

此代码的输出是 - > Dan 10

谢谢!!



1> Mohammed Aou..:

这就是Java的工作方式.默认情况下,在其param对象上System.out.println()调用该toString()方法以将其转换为其字符串表示形式.

如果对象的类没有覆盖该toString()方法,则可能会得到类似的结果className@someHexadecimalNumber.(这是类中toString()方法的默认实现的结果Object)



2> Elliott Fris..:

因为System.out.println(this);调用

String.valueOf(this)

反过来打电话

this.toString()

基本上就是这样System.out.println(this.toString());.

System.out是一个PrintStream所以你可以看到PrintStream.println(Object)哪些(部分)

此方法首先调用String.valueOf(x)获取打印对象的字符串值,然后表现为调用print(String)然后println().

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有