数组基本概念
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