任何人都可以告诉我在下面的数组初始化有任何区别。
String[] emptyName = new String[]{"hi","hello","what"};
String[] emptyName={"hi","hello","what"};
String emptyName[] = new String[]{"hi","hello","what"};
String emptyName[] = new String[]{new String("hi"),new String("hello"),new String("what")};
由于
答案 0 :(得分:2)
没有区别。它只是数组声明中的Syntactic sugar
。
我更喜欢不那么混乱的方式,这是第二种类型。
等等......仔细看。你现在会看到差异。下面的例子说明了初始化的风格如何重要。有一种方法
private void methodName(String[] strs){
// do something
}
在打电话给他们的时候,看看有什么不同。
methodName(new String[] {"hi","hello","what"}); // inline creation
methodName({"hi","hello","what"}); //Error. Type missing now
答案 1 :(得分:2)
String[] someArray
与String someArray[]
之间没有区别。等号后面的所有内容都只是声明数组将被初始化的内容。
答案 2 :(得分:1)
除了符号之外,以上所有内容都将采用相同的代码和编译方式: - )
答案 3 :(得分:1)
除了String和Array声明中的语法之外,四个声明之间没有区别。
创建字符串的最直接方法是写:
String foo = "hi";
在这种情况下,"hi"
是一个字符串文字 - 代码中的一系列字符用双引号括起来。
与任何其他对象一样,您可以使用new关键字和构造函数创建String对象。
From(JLS§10.2)
[]可能会出现在开头的类型中 声明,或作为特定变量的声明者的一部分, 或两者兼而有之。
String[] emptyName
= String emptyName[]
(请注意,方括号应该是类型的一部分,而不是变量,所以你不应该使用第二个数组声明)
答案 4 :(得分:1)
来自Java语言规范:http://docs.oracle.com/javase/specs/jls/se7/jls7.pdf
[]可能会出现在开头的类型中 声明,或作为特定变量的声明者的一部分, 或两者。例如:byte [] rowvector,colvector,matrix [];这个 声明等效于:byte rowvector [],colvector [], 矩阵[] [];