Java中的字符串数组初始化

Ank*_*hra 82 java arrays string

如果我声明一个String数组:

String names[] = new String[3];
Run Code Online (Sandbox Code Playgroud)

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

names = {"Ankit","Bohra","Xyz"};
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 150

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

String names[] = {"Ankit","Bohra","Xyz"};
Run Code Online (Sandbox Code Playgroud)

如果你想在声明后的某个地方这样做:

String names[];
names = new String[] {"Ankit","Bohra","Xyz"};
Run Code Online (Sandbox Code Playgroud)

  • @AnkitBohra因为`{"x","y","z"}`不是数组实例.而`new String [] {"x","y","z"}`是. (11认同)
  • BTW,`String names []`相当于`String [] names` ... (11认同)

ζ--*_*ζ-- 13

names[] = {"Ankit","Bohra","Xyz"};
Run Code Online (Sandbox Code Playgroud)

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

String[] names= {"Ankit","Bohra","Xyz"};
Run Code Online (Sandbox Code Playgroud)

您也可以使用:

names=new String[] {"Ankit","Bohra","Xyz"};
Run Code Online (Sandbox Code Playgroud)


zEr*_*Ero 6

首先,这与无关String,它与数组有关......而且对于数组的声明性初始化也是如此.

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

String names[] = {"x","y","z"};
Run Code Online (Sandbox Code Playgroud)

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

names = new String[] {"a","b","c"};
Run Code Online (Sandbox Code Playgroud)

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

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