在java中声明和定义变量的不同方法

时间:2014-04-23 03:28:09

标签: java arrays

我知道如果你想在Java中声明一个数组,你应该使用如下语法:

class Dog {
    Dog[] pets = new Dog[7];
}

但是我在“Head First Java”(p83)中看到了另一种格式,Eclipse给我一个语法错误:

class Dog {
    Dog[] pets;
    pets = new Dog[7];
}

有人可以解释原因吗? 感谢

1 个答案:

答案 0 :(得分:7)

首先,你的例子没有任何意义。为什么Dog会有其他宠物狗?让我们改为Human,不是吗?


class Human {
   Dog[] pets = new Dog[7];   // Note that I fixed your code, by declaring
                              // this as an **array** of Dog
}

这是类成员声明。您正在声明Dog的公共数组,并且初始化它。出于所有意图和目的,以下示例是等效的。我正在构造函数中初始化pets

class Human {
   Dog[] pets;

   public Human() {
      pets = new Dog[7];
   }
}

然而,这是无效的:

class Human {
   Dog[] pets;
   pets = new Dog[7];    // Cannot include executable statements outside
                         // the context of a function.
}

所有代码(可执行语句)必须位于函数内。你不能把代码放在一个类中。

也许你对此感到困惑的是,就像这样:

class Program {
    void main() {
        Dog[] pets;

        pets = new Dog[7];
    }
}

这是可以接受的,因为pets局部变量,仅在main函数的范围内定义。