toString是否也调用了原始类型?

时间:2013-09-06 10:00:18

标签: java tostring

我知道每当我们打印一个对象时toString都会调用Java,默认情况下在Object类中定义,这是所有类的超类。

但是,我的老师说,当我们打印一些toStringprimitive type等)时,也会调用int, char

这是真的吗?

3 个答案:

答案 0 :(得分:49)

是的,但不是你期望它的意义。

System.out.println(someInt)

只是print的包装器,它还添加了一行。

System.out.print(someInt)

calls

String.valueOf(someInt)

反过来calls

Integer.toString(someInt)

a static method的Integer类中为returns a String object representing the specified integer。此方法Integer#toString()相同,someInt.toString()是将其Integer对象转换为表示其int值的字符串的实例方法。

someInt无法正常工作,因为Object不会延伸{{1}},因为它不是对象。

答案 1 :(得分:1)

如果您考虑使用以下代码

System.out.println(5); 

以下事情将会发生

public void println(int x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

来自PrintStream类的函数将被调用,内部将调用print(x)函数,如下所示 -

public void print(int i) {
    write(String.valueOf(i));
}

现在如果你在String类

中看到valueOf()函数
public static String valueOf(int i) {
    return Integer.toString(i);
}

Integer.toString(i)是您的老师通过调用toString()方法的意思。

答案 2 :(得分:0)

基元自动装箱到各自的对象类型。因此toString()会致电。