toString 是否也要求基元类型?
我知道每当我们打印一个对象时都会调用它,并且默认情况下,它是在所有类的超类中定义的。toStringJavaObject
但是,我的老师说,当我们打印一些(等)时,也叫它。toStringprimitive typeint, char
这是真的吗?
我知道每当我们打印一个对象时都会调用它,并且默认情况下,它是在所有类的超类中定义的。toStringJavaObject
但是,我的老师说,当我们打印一些(等)时,也叫它。toStringprimitive typeint, char
这是真的吗?
是的,但不是你所期望的。
System.out.println(someInt)
只是一个包装器,这也增加了一行。print
System.out.print(someInt)
String.valueOf(someInt)
这反过来又调用
Integer.toString(someInt)
它是 Integer 类中的一个静态方法,它返回一个表示指定整数的 String 对象。此方法与 不同,后者是一种实例方法,它将其 Integer 对象转换为表示其 int 值的字符串。Integer#toString()
someInt.toString()不会工作,因为它不是一个对象,所以不会扩展。someIntObject
让我们看看是如何工作的。根据 API 是一个:System.out.print(int)SystemSystem.outPrintStream
public static final PrintStream out
在src中,我们可以看到它如何打印ints:PrintStream
public void print(int i) {
write(String.valueOf(i));
}
这是来自src:String.valueOf(int)String
public static String valueOf(int i) {
return Integer.toString(i);
}