Java数组初始化初学者的问题

时间:2009-11-12 23:04:02

标签: java

关于Java数组的一个非常简单的初学者问题:

任何人都可以解释为什么编译器不喜欢这个:

class Cycle {}

public class CycleTest {
    Cycle[] cy = new Cycle[3];
    cy[0] = new Cycle();
    cy[1] = new Cycle();
    cy[2] = new Cycle();
}

非常感谢。

5 个答案:

答案 0 :(得分:7)

这是因为您尝试执行的代码不在方法或其他类型的代码块中。您必须在类中声明方法或构造函数以包含代码。

例如:

public class CycleTest {
    private void initializeCycle() {
        Cycle[] cy = new Cycle[3];
        cy[0] = new Cycle();
        cy[1] = new Cycle();
        cy[2] = new Cycle();
    }
}

答案 1 :(得分:4)

您可以使用数组初始值设定项:

public class CycleTest {
    Cycle[] cy = {
        new Cycle(),
        new Cycle(),
        new Cycle()
    };
}

答案 2 :(得分:3)

而且,如果你真的想让Cycle [] cy拥有对象范围(而不是只能从其定义的方法中访问):

public class CycleTest {
    private Cycle[] cy;
    private void initializeCycle() {
        cy = new Cycle[3];
        cy[0] = new Cycle();
        cy[1] = new Cycle();
        cy[2] = new Cycle();
    }
}

public class CycleTest {
    private Cycle[] cy = new Cycle[] {
        new Cycle(),
        new Cycle(),
        new Cycle(),
    };
    private void method() { ... }
    ...
}

答案 3 :(得分:2)

要初始化实例变量,您可以使用实例初始化块(类似于静态块)

class Cycle {}

public class CycleTest {
    Cycle[] cy = new Cycle[3];

    {
        cy[0] = new Cycle();
        cy[1] = new Cycle();
        cy[2] = new Cycle();
    }
}

或者您应该在申报时初始化它。

答案 4 :(得分:0)

您可以为初始化数据提供构造函数。在创建对象的实例(即new)时会调用构造函数。您所要做的就是将其命名为与类相同且没有返回类型。

class Cycle {}

public class CycleTest {
  Cycle[] cy;

  // This is a constructor
  // you can put initialization here
  public CycleTest(){
    cy = new Cycle[3];
    cy[0] = new Cycle();
    cy[1] = new Cycle();
    cy[2] = new Cycle();
  }
}