为什么print和println时候toString 方法会自动被调用,printlntostring
分享于 点击 16123 次 点评:275
为什么print和println时候toString 方法会自动被调用,printlntostring
为什么toString 方法会自动被调用源码
Sting.valueOf
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } /**
参数: obj - 一个 Object。 返回: 如果参数为 null, 则字符串等于 "null";否则, 返回 obj.toString() 的 值
现在的问题是,当用户调用 print 或 println 方法打印一个对象时,为什么会打印 出对象的 toString()方法的返回信息。
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
1.这个是 Ojbect 中的 toString()方法,toString 会打印出 return 信息。
public void println(Object x){
String s = String.valueOf(x);
synchronized (this)
{
print(s);
newLine();
}
write(String.valueOf(obj));
}
3.我们看到,在 2 中,当要打印一个对象时,会自动调用 String.valueOf()这个 方法,
下面是这个方法的代码:
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } 这个方法中,当传入的对象为 null 时返回一个 null,当非 null 时,则返回这个 obj 的 toString()。
所以, 这就是当我们调用 print 或者 println 打印一个对象时,它会打印出这个 对象的 toString()的最终根源。
相关文章
- 暂无相关文章
用户点评