Java 数组
一、数组介绍
-
数组是相同类型数据的有序集合。
-
每一个数据都是一个数组元素,可以通过下标进行访问。
-
下标从 0 开始。
二、创建数组
-
声明数组变量
首选:
dataType[] arrayName;
或
dataType arrayName[];
-
使用 new 创建数组,并指定长度
dataType[] arrayName = new dataType[arraySize];
-
通过下标对数组元素进行赋值
arrayName[index] = data;
-
获取数组的长度
arrayName.length
public class Demo {
public static void main(String[] args) {
int[] nums; // 1.声明int类型的数组
nums = new int[10]; // 2.创建数组,长度为10
System.out.println("数组长度:" + nums.length);
// 3.给数组元素赋值
for (int i = 0; i < 10; i++) {
nums[i] = i+1;
System.out.println(nums[i]);
}
}
}
三、数组初始化
1. 静态初始化
// 静态初始化包括:创建 + 赋值
int[] a = {1,2,3,4,5};
2. 动态初始化
int[] a = new int[2];
a[0] = 1;
a[1] = 2;
3. 默认初始化
数组是引用类型,经过分配空间后,每个元素都被隐式初始化。
// 默认初始化
int[] b = new int[10]; // 此时数组 b 中的所有元素的值被初始化为 0
四、数组特点
- 数组的长度是确定的,一旦被创建,长度是不可以改变的
- 其元素必须是相同类型的,不允许出现混合类型!
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
- 数组属于引用类型,也是对象,每个元素相当于成员变量。
- 无论数组保存的是基本类型数据还是其它对象类型数据,数组本身存在于堆中
数组的边界问题
-
数组的下标合法区间:[0, length-1],一旦越界,就会报错:
ArrayIndexOutOfBoundsException: 越界下标值
五、数组使用
1. 普通 for 循环
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
// 打印全部数组元素
for (int i=0; i < array.length; i++) {
System.out.println(array[i]);
}
}
2. for-each 循环
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
// 打印全部数组元素
for (int x : array) {
System.out.println(x);
}
}
3. 数组作为参数
// 遍历数组,数组作为参数
public static void printArray(int[] array) {
for (int i : array) {
System.out.print(i);
}
}
4. 数组作为返回值
// 反转数组,数组作为返回值
public static int[] reverseArray(int[] array) {
int length = array.length;
int[] newArray = new int[length];
for (int i = 0; i < length; i++) {
newArray[i] = array[length-1-i];
}
return newArray;
}
六、多维数组
多维数组中的每一项仍是一个数组。
二维数组可以形成一个矩阵。
了解即可,并不常用。
// 定义一个3行5列的二维数组(矩阵)
int[][] a = new int[3][5];
七、Arrays 类
java.util.Arrays
数组对象本身没有什么方法能用,但是,API 提供了一个可供我们使用的工具类 Arrays,从而可以对数组对象进行一些基本的操作。
Arrays 类中的方法都是 static 修饰的静态方法,所以可以直接使用类名进行调用。
Arrays 类中的常用方法:
- 给数组赋值:fill()
- 对数组排序:sort(),升序
- 比较数组:equals(),比较数组中的元素值是否相等
- 查找元素:binarySearch(),对排序好的数组进行二分查找