TL;DR
- 必须键入数组变量
T[]
(注意 T 本身可以是一个数组类型 -> 多维数组)
- 数组的长度必须由以下任一方式确定:
- 给它一个明确的大小
(可以是int 常量或int 表达式,见下文n)
- 初始化数组中的所有值
(长度是根据给定元素隐式计算的)
- 键入
T[] 的任何变量都有一个只读字段:length 和一个索引运算符[int],用于在某些索引处读取/写入数据。
回复
1。 String[] array= new String[]{};这里的{}有什么用?
它使用{ } 之间的值初始化数组。在本例中为 0 个元素,因此 array.length == 0 和 array[0] throws IndexOutOfBoundsException: 0。
2。 String array=new String[]; 和 String array=new String[]{}; 之间的区别是什么
第一个由于两个原因无法编译,而第二个由于一个原因无法编译。常见的原因是变量数组的类型必须是数组类型:String[] 而不仅仅是String。忽略这一点(可能只是一个错字)的区别是:
new String[] // size not known, compile error
new String[]{} // size is known, it has 0 elements, listed inside {}
new String[0] // size is known, it has 0 elements, explicitly sized
3。当我写String array=new String[10]{}; 时出现错误,为什么?
(同样,在array 之前忽略缺少的[])在这种情况下,您过于急于告诉Java 做什么并且您提供了相互冲突的数据。首先,您告诉 Java 您希望数组包含 10 个元素,然后您通过{} 说您希望数组为空。
只需下定决心并使用其中之一 - Java 认为。
帮帮我,我很困惑
示例
String[] noStrings = new String[0];
String[] noStrings = new String[] { };
String[] oneString = new String[] { "atIndex0" };
String[] oneString = new String[1];
String[] oneString = new String[] { null }; // same as previous
String[] threeStrings = new String[] { "atIndex0", "atIndex1", "atIndex2" };
String[] threeStrings = new String[] { "atIndex0", null, "atIndex2" }; // you can skip an index
String[] threeStrings = new String[3];
String[] threeStrings = new String[] { null, null, null }; // same as previous
int[] twoNumbers = new int[2];
int[] twoNumbers = new int[] { 0, 0 }; // same as above
int[] twoNumbers = new int[] { 1, 2 }; // twoNumbers.length == 2 && twoNumbers[0] == 1 && twoNumbers[1] == 2
int n = 2;
int[] nNumbers = new int[n]; // same as [2] and { 0, 0 }
int[] nNumbers = new int[2*n]; // same as new int[4] if n == 2
(这里,“same as”表示构造相同的数组。)