Java中的字符串数组初始化
如果我声明一个Java中的字符串数组初始化,java,arrays,string,Java,Arrays,String,如果我声明一个字符串数组: String names[] = new String[3]; 那么为什么我们不能像这样为上面声明的数组赋值呢 names = {"Ankit","Bohra","Xyz"}; 您可以在声明期间执行以下操作: String names[] = {"Ankit","Bohra","Xyz"}; String names[]; names = new String[] {"Ankit","Bohra","Xyz"}; 如果您想在申报后的某个地方执行此操作: Str
字符串
数组:
String names[] = new String[3];
那么为什么我们不能像这样为上面声明的数组赋值呢
names = {"Ankit","Bohra","Xyz"};
您可以在声明期间执行以下操作:
String names[] = {"Ankit","Bohra","Xyz"};
String names[];
names = new String[] {"Ankit","Bohra","Xyz"};
如果您想在申报后的某个地方执行此操作:
String names[] = {"Ankit","Bohra","Xyz"};
String names[];
names = new String[] {"Ankit","Bohra","Xyz"};
是初始值设定项,仅在构造或创建新数组对象时使用。它不能用于设置数组。当声明为以下内容时,您可以使用它:
String[] names= {"Ankit","Bohra","Xyz"};
您也可以使用:
names=new String[] {"Ankit","Bohra","Xyz"};
你是说:
String names[] = {"Ankit","Bohra","Xyz"};
但是,只有在声明它时才能在同一语句中执行此操作,因为它不是有效的Java语法。你能行
names = new String[] {"Ankit","Bohra","Xyz"};
首先,这与
String
无关,它与数组有关。。这也是关于数组的声明式初始化的特别之处
正如大家在这里的几乎每个答案中所讨论的,在声明变量时,您可以使用:
String names[] = {"x","y","z"};
但是,如果要分配数组实例,请在声明后执行以下操作:
names = new String[] {"a","b","c"};
顺便说一句,声明语法只是一种语法糖,在为变量赋值时不再适用,因为赋值时需要正确创建实例
然而,如果你问我们为什么会这样?好祝你好运找到答案。除非Java委员会有人回答这个问题,或者有明确的文档引用了上述语法糖。不是这样,我想知道为什么我们不能在声明任何数组后进行花括号初始化。因为不幸的是,语言是这样定义的。“数组常量只能在初始化器中使用”;这还不够吗?除非你在寻找“立法意图”之类的东西!当我问到为什么我们不能在声明为3的数组后用大括号初始化它时。@AnkitBohra。这就是第二个代码段所做的。@AnkitBohra因为
{“x”、“y”、“z”}
不是数组实例。虽然newstring[]{“x”、“y”、“z”}
is.BTW,String names[]
相当于String[]names
…当我们不得不使用-String[]names={“Ankit”、“Bohra”、“Xyz}时,它有什么区别;当名称=新字符串[]{“Ankit”、“Bohra”、“Xyz”}时;,它适合的任何用例。提前谢谢@hexafraction.@Avenger Nothing。如果我没记错的话,他们都做同样的事情。