创建数组的区别

时间:2013-11-24 14:52:43

标签: java arrays string

我正在尝试使用以下两种方式创建数组:

WAY#1 - >

// 1-D String Array
String[] strs1 = new String[8];

// 2-D String Array
String[][] array1 = new String[8][8];

WAY#2 - >

// 1-D String Array
String[] strs1 = (String[]) Array.newInstance(String.class, 8);

// 2-D String Array
String[][] array2 = (String[][]) Array.newInstance(String.class, 8, 8);

以上两种创建数组的方法有什么区别? * 哪一个更好? *请帮我解决这个问题。提前谢谢!

5 个答案:

答案 0 :(得分:4)

自1998年我开始编写Java以来​​,我从未见过第二种方式。我没有比较字节代码,看它们是否产生相同的东西,但我会说第二种方式不太可读,不太常见,更多的是头部刮擦。

做一件简单的事情:更喜欢#1。

答案 1 :(得分:3)

对于example

,第二种方法通常对通用或运行时数组构造很有用
class Stack<T> {
  public Stack(Class<T> clazz,int capacity) {

     array=(T[])Array.newInstance(clazz,capacity);
  }

  private final T[] array;
}

对于像你这样的简单和非泛型数组,你不应该使用这种漫长且不可读的方式。它只是第一个相当长的。

答案 2 :(得分:2)

既然您知道要创建2d string array,那么第一种方式就足够了

但是如果直到运行时才知道组件类型(你不知道你是否想要这个数组字符串或int或......),那么它更喜欢使用第二种方式

 Object obj=Array.newInstance(Class.forName(c), n);// Here "c" variable will
                                                   // known through the run time

请参阅this example了解我所说的内容

答案 3 :(得分:1)

这两种方式没有太大区别,但第一种方式是直接,简单,可读,便于维护,安全。

第二种方法需要铸造通过反射获得的物体。如果你必须在运行时创建对象然后使用第二种方式,我建议使用第一种方法。

为了看起来更好,不需要简单的解决方案。

答案 4 :(得分:-1)

我认为第一种方式和第二种方式没有区别,虽然第一种方式比第二种方式更具可读性,第二种方式表明您对所做的事情有很好的了解。