不同类型的数组声明

时间:2014-12-23 17:03:38

标签: java arrays

任何人都可以告诉我在下面的数组初始化有任何区别。

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")};

由于

5 个答案:

答案 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[] someArrayString 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 [],   矩阵[] [];