Day01 课后作业遇到的问题

二、不运行代码,直接说出打印结果,并解释原因。
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 ";
}
}
输出:I love Java
me 2

这一段代码输出的结果I love Java,因为在调用println这个方法的时候love字符串调用了toString方法,然后加号两边两个成员都分别进行了.toString运算。java这个字符串用了.toString运算以后 调用了 String中的 toString方法,但是这个方法没有被重写,所以还是返回java。
后面的匿名对象也调用了.toString方法匿名对象调用了这个方法。因为方法重写,在Object类里面的toString方法进行了重写,调用了本类里面的toString方法。为什么是Object里面的方法重写了?因为Object类是所有类的父类,每个类都默认继承了Object类。所以,直接重写了Object的toString方法。
调用了方法后输出了I 然后返回了Java在执行输出语句 输出字符串“love”最后是返回的Java。

猜你喜欢

转载自blog.csdn.net/u014452148/article/details/85249670