我想知道为什么这是合法的:
Object mystring = "hello";
System.out.println(mystring);
这会打印hello
。但为什么Object
被视为字符串?
答案 0 :(得分:5)
因为String
IS-A Object
,所以引用类型可以是任何超类型。
例如,您也可以将mystring
分配给CharSequence
类型。
println
的{{1}}方法(您的PrintStream
静态字段)有一个重载,可以将System.out
作为参数,并正确打印。
在这种情况下,String
中的代码实际上会打印PrintStream#println(Object)
,其中String.valueOf(x)
是您的给定参数。
答案 1 :(得分:3)
它称之为toString()方法。在String类中实现的那个。方法在运行时绑定。