黑马程序员技术交流社区

标题: String问题 [打印本页]

作者: 邵中国    时间: 2012-3-29 13:31
标题: String问题
import java.util.*;
public class InfiniteRecursion{
        public String toString(){
                return"InfiniteRecursion address:" + this + "/n";
        }
        public static void main(String[] args){
                List<InfiniteRecursion> v = new ArrayList<InfiniteRecursion>();
                for(int i=0;i<10;i++)
                v.add(new InfiniteRecursion());
                System.out.println(v);
        }
}
运行出错
作者: 马云    时间: 2012-3-29 13:33
本帖最后由 马云 于 2012-3-29 13:36 编辑

我回答:
+this
这句话错了,
this代表的是一个对象,不知道你加this是想达到什么效果!
你也算是高手了,我还没见过在字符串里写this+的
作者: 何万县    时间: 2012-3-29 13:37
import java.util.*;
public class InfiniteRecursion{
         public String InfiniteRecursion(){
                 return"InfiniteRecursion address:" + this + "/n";
         }
         public static void main(String[] args){
                 List<InfiniteRecursion> v = new ArrayList<InfiniteRecursion>();
                 for(int i=0;i<10;i++)
                 v.add(new InfiniteRecursion());
                 System.out.println(v);
         }
}

作者: 何万县    时间: 2012-3-29 13:38
我认为这样可以,把你的tostring   函数,改成构造函数

作者: yangshang1    时间: 2012-3-29 13:38
this 就表示你的tostring 重复了
作者: izwj    时间: 2012-3-29 13:59
打印地址值可以这样写:
import java.util.*;
public class InfiniteRecursion{
        
        public static void main(String[] args){
                List<InfiniteRecursion> v = new ArrayList<InfiniteRecursion>();
                for(int i=0;i<10;i++)
                v.add(new InfiniteRecursion());
                System.out.println("InfiniteRecursion address:"+v+ "/n");
                               
        }
}

作者: 邵中国    时间: 2012-3-30 15:46
感谢楼上
已找到答案,要打印地址的话,应该用super。String中“+”后面
调用的是this的toString方法,这样就出现了递归调用的场面




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2