概要
和C++不同,Java中的数组是一种引用数据类型,类似C/C++中的数组指针,内存分配在堆区。
数组长度不要求一定是常量,但是一旦创建了数组,就不能再改变它的大小。
可以使用array.length获取数组中元素的个数。
Java中,数组可用for each循环:for(变量:数组名)执行语句(Java 5支持)。
for (variable : collection) {
statement;
}
其中collection必须是一个数组或者是一个实现了Iterable接口的类对象。
Java中,允许长度为0的数组,和null不同。
Java中,支持不规则二维数组,对每行的元素进行单独分配。
初始化
int n = 10;
int[] a1 = new int[10];
int[] a2 = new int[n]; // 可以使用变量申请数组
int[] a3 = {2, 3, 4, 1, 3}; // 不使用new,直接初始化数组
a3 = new int[] {1, 3, 4, 1, 3}; // 将一个匿名数组赋给一个已有变量,该方法不需要创建新变量
int[] a4 = new int[0]; // Java允许长度为0的数组,常用于方法返回值
int[][] a5 = new int[5][10]; // 创建一个5行10列的二维数组
int[][] a6 = {
{85, 65, 10}
{54, 69, 66}
} // 不使用new,直接初始化一个二维数组
示例
public class ArrayDemo {
public static void main(String[] args) {
// 创建一个一维数组
int[] array = {12, 54, 85, 63, 25, 95, 74, 62};
// 使用for each循环输出该一维数组的值
for (int i : array) {
System.out.print(i + "\t");
}
System.out.println();
System.out.println("-------------------");
// 创建一个二维数组
int[][] biArray = new int[3][5];
// 对该二维数组赋值,其值就是其编号
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
biArray[i][j] = i * 5 + j;
}
}
// 使用for each循环输出该二维数组的值
for (int[] is : biArray) {
for (int i : is) {
System.out.print(i + "\t");
}
System.out.println();
}
System.out.println("-------------------");
// 创建一个不规则数组,该数组有n行,第i行有i个元素
int n = 6;
int[][] unArray = new int[n][];
// 对该不规则数组赋值,每个元素的值就是其两个下标之和
for (int i = 0; i < n; i++) {
unArray[i] = new int[i + 1];
for (int j = 0; j <= i; j++)
unArray[i][j] = i + j;
}
// 使用for each循环输出该不规则数组的值
for (int[] i : unArray) {
for (int j : i)
System.out.print(j + "\t");
System.out.println();
}
System.out.println("-------------------");
}
}