82

如果我声明一个String数组:

String names[] = new String[3];

那为什么我们不能像这样为上面声明的数组赋值:

names = {"Ankit","Bohra","Xyz"};
4

5 回答 5

150

您可以在声明期间执行以下操作:

String names[] = {"Ankit","Bohra","Xyz"};

如果您想在声明后的某个地方执行此操作:

String names[];
names = new String[] {"Ankit","Bohra","Xyz"};
于 2013-07-07T18:40:29.863 回答
13
names[] = {"Ankit","Bohra","Xyz"};

是一个初始化器,在构造或创建数组对象时使用。它不能用于设置数组。您可以在声明为时使用它:

String[] names= {"Ankit","Bohra","Xyz"};

您还可以使用:

names=new String[] {"Ankit","Bohra","Xyz"};
于 2013-07-07T18:40:55.670 回答
6

首先,这与数组无关String,它与数组有关.. 并且特别与数组的声明性初始化有关。

正如每个人在这里几乎每个答案中所讨论的那样,您可以在声明变量时使用:

String names[] = {"x","y","z"};

但是,在声明后,如果要分配 Array 的实例:

names = new String[] {"a","b","c"};

AFAIK,声明语法只是一种语法糖,在为变量赋值时不再适用,因为在赋值时需要正确创建实例。

但是,如果你问我们为什么会这样?嗯......祝你好运得到答案。除非 Java 委员会的某个人回答了这个问题,或者有明确的文档引用了上述语法糖

于 2013-07-07T18:56:06.940 回答
3

你的意思是:

String names[] = {"Ankit","Bohra","Xyz"};

但是您只能在声明时在同一语句中执行此操作

于 2013-07-07T18:41:28.327 回答
2

它只是不是一个有效的 Java 语法。你可以做

names = new String[] {"Ankit","Bohra","Xyz"};
于 2013-07-07T18:44:00.580 回答