在Java中,我们通常将字符串作为输入传递给System.out.println
如果您尝试输入一些奇怪的内容,例如Exception
类的实例,会发生什么?
class Main {
public static void main(String[] args]) {
System.out.println("printing a string is perfectly normal");
Exception e = new Exception();
System.out.println(e);
}
}
允许哪些数据类型作为System.out.println
的输入?
如果您尝试打印未为其重载System.out.println
的类的实例,会发生什么?
答案 0 :(得分:0)
它使用Object参数调用重载方法,如下所示:
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
如果对象是"null"
,这实际上将打印null
,否则将在对象上打印调用.toString
的结果。
答案 1 :(得分:0)
允许哪些数据类型作为System.out.println的输入?
任何事情。
如果尝试打印一个类的实例会发生什么? System.out.println是否未过载?
对象有一个重载,它的documentation说明发生了什么:对于参数x
,将调用String.valueOf(x)
,并打印结果。
如果您读了documentation for that,它说x.toString()
将被调用为非null x
。
简而言之,所有对象都具有可访问的toString()
方法,这就是确定要打印的内容的原因。