Object类的toString方法
在通常情况下 ,在print的输出本质上是执行toString()的输出
public class ToStringTest{
public static void main(String args[]){
ToStringTest t = new ToStringTest();
System.out.println(t);
}
//在ToStringTest中对toString重写
public String toString(){
return "java";
}
}
运行结果
这有道题可以更好体现
public class ToStringTest{
static inti= 1;
public static void main(String args[]){
System.out.println("love " + new ToStringTest());//love java
ToStringTest a = new ToStringTest();
a.i++;
System.out.println("me " + a.i);//me 2
}
public String toString(){
System.out.print("I ");//I
return "java ";
}
}
先不运行,思考下会生成什么。。
结果:
原因:
由于所有类的最终父类都是Object,在ToStringTest类下重写了方法toString(),而在print下的打印其实都是toString()方法的执行。在print中有优先new创建对象执行了toString()中的打印“I ”后再打印出“love” 和ToStringTest()
print(Object obj)中的源码
ToStringTest的直接父类就是Object