我对java中的数组有一些疑问:
在以下表达式中创建了多少个对象?
(a)new int[0]
:创建了一个对象,一个大小为0的数组。???
(b)new int[2][2]
:创建了一个对象,一个包含2行和列的数组。???
(c)new int[2][]
:没有创建对象???
我想知道表达式旁边的解决方案是否正确。如果没有,希望你能帮忙并给我一些解释。我真的不明白我应该做的事情。
提前致谢!
答案 0 :(得分:4)
以下是Java规范的摘录:
在Java编程语言中,数组是对象(§4.3.1),是 动态创建,可以分配给Object类型的变量 (§4.3.2)。可以在数组上调用Object类的所有方法。
这意味着每个数组都是一个自己的对象,这使得你的答案 a)正确。
b)创建了3个对象:第一个数组和两个包含每个2 int
的数组。我不会计算int
- 条目,因为它们是Java中的原始类型。
c)创建了一个对象:1个包含两个空条目的数组。
答案 1 :(得分:3)
new int [0]
是的,这是一个空数组,创建了一个对象。
int[] emptyArray = new int[0];
System.out.println(emptyArray.length); // Outputs 0
new int [2] [2]
是的,这创建了包含2行和列的数组,创建了3个对象。
int[][] bar = new int[2][2];
System.out.println(bar.getClass()); // Outputs class [[I
int[] bar1 = bar[0];
System.out.println(bar1.getClass()); // Outputs class [I
int[] bar2 = bar[1];
System.out.println(bar2.getClass()); // Outputs class [I
new int [2] []
Java支持锯齿状数组。这意味着当您创建int[2][]
时,这意味着您拥有各种大小int[]
的数组。这里只创建了一个对象。
int[][] foo = new int[2][];
System.out.println(foo[0]); // Outputs null
System.out.println(foo[1]); // Outputs null
foo[0] = new int[10];
foo[1] = new int[5];