如果您将异常传递给Java的`System.out.println`,会发生什么?

时间:2020-07-26 22:11:25

标签: java printing

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

2 个答案:

答案 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()方法,这就是确定要打印的内容的原因。

相关问题