黑马程序员技术交流社区

标题: 不能编译 [打印本页]

作者: 付星    时间: 2012-1-3 17:40
标题: 不能编译
public class Creator {
        public static void main(String[] args) {
                for (int i = 0; i < 100; i++)
                        Creature creature = new Creature();//这里不能编译,为什么?
                System.out.println(Creature.numCreated());
}
}

class Creature {
        private static long numCreated = 0;

        public Creature() {
                numCreated++;
        }

        public static long numCreated() {
                return numCreated;
        }
}
作者: 李盈科    时间: 2012-1-3 17:47
本帖最后由 李盈科 于 2012-1-3 17:51 编辑

改完了 看一下
  1. public class Creator {
  2.     public static void main(String[] args) {
  3.             for (int i = 0; i < 100; i++)
  4.            {
  5.                     Creature creature = new Creature();
  6.             }//加上括号
  7.             System.out.println(Creature.numCreated());
  8. }
  9. }
复制代码
局部变量的作用范围是在一个块内,也可以理解为在{ }内。for 循环可以不使用{ }的,但仅限于
执行语句(其中并不包括变量声明语句)。
作者: 曾运    时间: 2012-1-3 17:51
for (int i = 0; i < 100; i++)
                       Creature creature = new Creature();//这里不能编译,为什么?


你在for循环里面的代码相等于执行了100次的:
Creature creature = new Creature();
Creature creature = new Creature();
Creature creature = new Creature();
Creature creature = new Creature();
Creature creature = new Creature();
……

creature 引用变量重复了啊!!!!!
作者: 为梦而战    时间: 2012-1-3 17:57
public class Creator {
        public static void main(String[] args)
        {
                for (int i = 0; i < 100; i++)
               {        Creature creature = new Creature();//这里不能编译,为什么?
                        System.out.println(Creature.numCreated());
                }       
        }
}

class Creature {
        private static long numCreated = 0;

        public Creature() {
                numCreated++;
        }

        public static long numCreated() {
                return numCreated;
        }
}
运行结果:1到100,这是你要的结果吗?如果是话,那你是错误就是for(){}这里两行代码没有上{}。上了之后就是你要的结果,我加上{}运行了,没问题
作者: 杨旭    时间: 2012-1-3 17:58
  1. public class Creator {
  2.         public static void main(String[] args) {
  3.                 for (int i = 0; i < 100; i++) {// for循环没有括号
  4.                         Creature creature = new Creature();
  5.                         System.out.println(Creature.numCreated());
  6.                 }
  7.         }
  8. }

  9. class Creature {
  10.         private static long numCreated = 0;

  11.         public Creature() {
  12.                 numCreated++;
  13.         }

  14.         public static long numCreated() {
  15.                 return numCreated;
  16.         }

  17. }
复制代码

作者: 刘健    时间: 2012-1-3 19:10
循环创建一个叫做 creature的对象,对象重复当然不能编译了
作者: 沈样    时间: 2012-1-3 22:40
是偱环在内存中创建同一个对象实例
作者: lvwenwen88    时间: 2012-1-4 21:02
偱环在内存中创建同一个对象实例




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