数组基本概念

Java 中的数组,元素类型和数组大小都是固定的。

数组的创建及使用

Java 中使用数组还是比较麻烦的,基本的流程是:数组声明->创建(分配内存)->初始化->使用:

int[] myArr;			// 声明数组的引用,此时是空引用,不可使用,不指向内存
// int myArr[]; 		// 这种风格尽量不要用
myArr = new int[3];	// 创建
myArr[0] = 1;			// 初始化
myArr[1] = 3;
myArr[2] = 666;

System.out.println(myArr[2]);

当然,数组的声明和创建可以合二为一,数组的声明、创建、初始化也可以合三为一:

int arr1[] = new int[10];	//	数组声明、创建
arr1[0] = 666;

int arr2[] = {1,3,5};		//	数组声明、创建及初始化
for (int i = 0; i < arr2.length; i++) {
	System.out.println(arr2[i]);
}

数组的默认值

数组在创建后,如果没有赋值,则会根据 Java 的默认规则有默认的初始值:

  • 基本类型:初始化为 0
  • boolean 类型:初始化为 false
  • 引用类型:初始化为 null

数组下标

Java 中,数组下标从0开始计数,类型必须是 int、short、byte 或 char。

可以通过数组的 length 属性得到元素的个数。

数组遍历

除了 C 风格的基本 for 循环,Java 还支持 foreach 循环:

double[] myArr = {1.23, 3.14};

for (double e: myArr) {
	System.out.println(e);
}

数组复制

将一个数组复制给另一个数组时,只是传递了引用,并不会创建新的数组。

int[] a1 = {1, 3, 7};
int[] a2 = a1;

System.out.println("a1 address is:" + a1 + "\na2 address is:" + a2);

字符数组

Java 中的字符数组不能直接当字符串处理,需要通过 String 构造为字符串:

char[] c = {'a', 'b', 'c'};

System.out.println(c + " hello");
System.out.println(new String(c) + " hello");

输出为:

[C@63b5e16d hello
abc hello

二维数组

二维数组的声明和构造

  • int[][] myArr :声明二维数组,myArr 是执行该二维数组的引用,初始值为 null。
  • int[][] myArr = new int[2][3] :声明二维数组并初始化,数组所有元素为空。
  • int[][] myArr = {{1,2}, {2,3}} :定义引用、构造数组、初始化数组。

二维数组长度及每行的长度

二维数组长度,指的是行数,每一行又有自己的长度。Java中每一行的长度可以不一样。

二维数组,就是由一维数组构成的数组。

int[][] arr = {{1,2,3,4,5}, {6,7}, {0}};

System.out.println(arr.length); // 3
System.out.println(arr[0].length); // 5
System.out.println(arr[1].length); // 2
System.out.println(arr[2].length); // 1