我刚刚了解了对象类中的toString()
方法以及如何在其他类中覆盖它。
class Box {
public String toString(){
return "class Box";
}
}
class B {
public static void main(String args[]){
Box b1=new Box();
System.out.println(b1); //case 1
Box b2=b1; //case 2
}
}
所以我的问题是,box 对象如何知道在案例 1 中返回类 Box 中toString()
中的字符串,并在案例 2 中返回b1
对象的地址?
您调用的System.out.println
方法是(Object)
重载,而不是(String)
。PrintStream.println(Object)
调用toString()
其论点(迂腐:直接或间接,除非论证null
(。
没有魔法。如果深入研究该方法,最终会显式调用toString
。
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString(); //in your case obj = the box in b1
}