在学习 垃圾回收 机制的时候,遇到一个问题,然后改写了一下代码,如下:
package day1021;
class Person
{
private String name;
private int age;
public Person(String name,int age)
{
this.name =name;
this.age = age;
}
public String toString()
{
return "姓名--"+name+"--年龄--"+age;
}
public void dada()
{
System.out.println("对象被释放"+this);
}
}
public class Test3
{
public static void main(String[] args)
{
Person per = new Person("张三",30);
per.dada();
}
}
测试结果输出的是:对象被释放姓名–张三–年龄–30
首先奇怪的是输出,为什么没有调用toString()方法,为什么会输出方法里面的内容呢?经过仔细的查找了一下 原因在于toString() 是String 类中的一个方法,上面的代码对改方法进行了重写,并且该方法返回的是此对象本身。
api中解释如下:
上面的代码 toString中 return 的字符串 赋值给了 当前对象,返回的是对象本身,所以结果输出的是 张三–年龄–30
而不是this的地址。
–本人初学者,勿喷。希望自己谨记 错误,不断概括,不断学习。