在JAVA中,数组比起C中,要强大得多
1.不规则数组
如:int [][] arr= new int[3][];
即,在为多维数组分配内存时,只分配一维,其他维可以手动分配,这大大提高了数组的灵活性,在需要非常大而稀疏的数组时,不规则数组是个很好的选择
package Test;
public class Test {
public static void main(String[] args) {
int [][] arr= new int[3][];
int k = 1;
arr[0] = new int [5];
arr[1] = new int [2];//看这里
for (int i : arr[0]) {
arr [0][i] = k++;
System.out.print(arr [0][i]+" ");
}
System.out.println();
for (int i : arr[1]) {
arr [1][i] = k++;
System.out.print(arr [1][i]+" ");
}
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
print:
1 2 3 4 5
6 7
2.对数组的引用赋值
由于数组是是引用数据类型,是有对象组成,如果将一个数组赋给另一个数组,只是改变了变量的引用对象,并不会产生新对象。
如:
package Test;
public class Test {
public static void main(String[] args) {
int [][] arr= new int[3][];//创建一个数组arr
int k = 1;
arr[0] = new int [5];
arr[1] = new int [2];
for (int i : arr[0]) {
arr [0][i] = k++;
System.out.print(arr [0][i]+" ");//赋值 1 2 3 4 5
}
System.out.println();
for (int i : arr[1]) {
arr [1][i] = k++;
System.out.print(arr [1][i]+" "); // 6 7
}
System.out.println();
int [][] arr2= new int [3][];//创建数组arr2
arr2[0] = new int [5];
arr2[1] = new int [2];
for (int i : arr2[0]) {
arr2 [0][i] = k++;
System.out.print(arr2 [0][i]+" ");// 8 9 10 11 12
}
System.out.println();
for (int i : arr2[1]) {
arr2 [1][i] = k++;
System.out.print(arr2 [1][i]+" ");// 13 14
}
arr2 = arr;//看这里,把 arr 赋给arr2
arr2 [1][0] = 10;//试图改变arr2 [1][0]
System.out.println();
System.out.println(arr[1][0]);// 打印 arr [1][0]
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
print:
arr:
1 2 3 4 5
6 7
arr2:
8 9 10 11 12
13 14
arr [1][0]:
10 //这里改变了arr[1][0],但是arr[1][0]也改变了,证明arr2引用了arr,而arr2变成了垃圾空间
3.神秘成员length
由于数组成员实现为对象,每个数组都有一个实例变量length,它包括数组可以保存的个数。也就是说,实例变量length包括数组大小。 length大小不能被外部修改,用起来十分方便,在不规则数组中,遍历不同维数不同长度数组时,用length更是方便。
package Test;
public class Test {
public static void main(String[] args) {
int [] arr = {1,2,3,4};
for (int i = 0; i < arr.length; i ++) {
System.out.println("a["+i+"]-->"+arr[i]+" ");
}
}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
print:
a[0]-->1
a[1]-->2
a[2]-->3
a[3]-->4