JAVA toString()问题!!!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/05 06:47:58
import java.util.*;
public class Demo {
public String toString(){
return “Demo address:”+this+“\n”
}
public static void main(String[] args) {

List v = new ArrayList();

for(int i = 0;i<10;i++)

v.add(new Demo());

System.out.println(v);

1。这里的this是什么意思啊?这里要打印地址,把this改成super.toString()就可以了

2。v.add(new demo());
这里为什么这么写,循环中的i为什么会用到new Demo()里的方法?toString()方法是重构了obj的方法

this代表当前对象.你直接打印this就是打打印的当前对象的内存地址
super在你现在这个类中代表Object任何类就是Object的子类,你的Demo类没有显式的继承关系.所以super代表Object.
什么toString()方法重构了obj的方法.没看懂.
List v = new ArrayList();
//定义一个ArrayList数组变量v.

for(int i = 0;i<10;i++)
//下面的第一行代码循环执行10次

v.add(new Demo());
//每次循环在v中添加一个新的Demo对象,这里新的Demo对象的意思是,内存地址不一样,那打印v的toString()方法得出结果是打印v里面每个元素的toString()
所以你会得到10个不同的值.你记住在Java中只要遇到new关键字新创建的对象内存地址就不一样,简单来说.就是给你一个馒头,看new关键字了就是另外一个一样的馒头而不是原来那个馒头的引用.

System.out.println(v);

这几句话的意思是

1.this指当前对象本身
2.你可以这样认为,
demo d=new demo();
v.add(d);

1·this也就是当前对象,但是用this是不正确的,会造成toString()一直调用自己,因为这里的this其实等同于this.toString()也就是调用本身~用super就可以了,用父类的构造方法··
2·Demo demo=new Demo();
v.add(demo);
和你所说的代码是等效的,这么理解就行~

super.toString()方法的返回值为
getClass().getName() + '@' + Integer.toHexString(hashCode())
类名@哈希值

而this表示当前类,相当于一个指针,指像该类的内存地址。
v是ArrayList的一个实例对象。v.add()表示要往