我正在尝试使用以下两种方式创建数组:
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);
以上两种创建数组的方法有什么区别? * 哪一个更好? *请帮我解决这个问题。提前谢谢!
答案 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)
我认为第一种方式和第二种方式没有区别,虽然第一种方式比第二种方式更具可读性,第二种方式表明您对所做的事情有很好的了解。