我知道如果你想在Java中声明一个数组,你应该使用如下语法:
class Dog {
Dog[] pets = new Dog[7];
}
但是我在“Head First Java”(p83)中看到了另一种格式,Eclipse给我一个语法错误:
class Dog {
Dog[] pets;
pets = new Dog[7];
}
有人可以解释原因吗? 感谢
答案 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
函数的范围内定义。