如果将异常传递到 Java 的"System.out.println"中,会发生什么?



在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未重载的类的实例,会发生什么情况?

它用Object参数调用重载方法,如下所示:

public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}

如果对象是null,这基本上打印"null",否则将在对象上打印调用.toString的结果。

哪些数据类型可以作为System.out.println的输入?

任何东西。

如果您尝试打印一个类的实例没有为重载System.out.println?

Object有一个重载,它的文档说明了发生了什么:对于参数x,调用String.valueOf(x),并打印结果。

如果你阅读了相关的文档,它说x.toString()将被调用为非空x

简而言之,所有对象都有一个可访问的toString()方法,这就是决定打印内容的原因。

最新更新