A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lixiuliang 中级黑马   /  2014-2-9 14:33  /  3273 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

传智播客入学测试第41题

4 个回复

倒序浏览
class MyClass {

        private MyClass(int num) {
                if ((num++) < 5) {
                        System.out.println(num);
                        new MyClass(num);
                }
        }

        public static void main(String[] args) {
                new MyClass(0);
        }
}

这样算不算是构造方法的递归调用?运行结果
1
2
3
4
5
回复 使用道具 举报
本帖最后由 wq10zj 于 2014-2-9 15:08 编辑

// 算是递归调用吧  个人理解  不知道是不是这样


YouClass{
  YouClass()
   {
     
    }   YouClass(int num)
   {
      this.num=num;
    }
  
}

class MyClass extends YouClass{

             MyClass (int num) {
                if ((num++) < 5) {
                        System.out.println(num);
                                              // this();//这里也是用到递归 使用的父类的无参构造方法
                     
                        //这里不是可不可以的问题  而是需不需要的问题  这样创建的多个实例占内存  
                       //new MyClass(num);
                        
                        this(num);//用到递归 使用的父类的有参构造方法
                        num++;//这样也可以
                       
                }
        }

        public static void main(String[] args) {
                new MyClass(0);
        }
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 赞一个!

查看全部评分

回复 使用道具 举报
wq10zj 发表于 2014-2-9 15:02
// 算是递归调用吧  个人理解  不知道是不是这样

程序是错的,但把你的程序调试了一遍终于知道为什么不能递归调用构造方法了。谢谢哈!
回复 使用道具 举报
public class MyClass {

        public static void main(String[] args){
                S s = new S(100);
                S[] ss = s.getS();
                for (S s2 : ss) {
                        System.out.println(s2.getx());
                }
                System.out.println(ss.length);
        }
}
class S {
        static S[] s = new S[10];
        static int i = -1;
        int x= 0;
        public S( int x){
                this.x = x;
                if(i<9 && i>=0){
                        i++;
                        s[i]= new S(i);
                }else if(i==-1){
                        i++;
                        s[i] = this;
                        new S(i);
                }
        }
        public S[] getS(){
                return s;
        }
        public int getx(){
                return x;
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马