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