5、数组
大约 3 分钟
数组
数组是有序排列的
数组属于 引用数据类型
数组的元素既可以是 基本数据类型,也可以是 引用数据类型
创建数组对象会在内存中开辟一整块 连续 的空间
数组的 长度一旦确定就不能修改
数组的长度:数组.length
1、一维数组
数组一旦 初始化,其长度就是确定的且不可修改
一维数组的 声明 和 初始化(静态初始化,动态初始化)
public class ArrayTest {
public static void main(String[] args) {
int[] a,b,c[]; // 声明了两个一维数组,一个二维数组
int d[][],e[],f; // 声明了二维数组,一维数组,一个 int
// 一维数组的声明和初始化
// 静态初始化:数组的初始化和数组元素的赋值操作同时进行
int[] ids;
ids = new int[] { 1001, 1002, 1003, 1004 };
int[] nums = {1,2,3,4};
// 动态初始化:数组的初始化和数组元素的赋值操作分开进行
String[] names = new String[3];
// 调用数组指定位置的元素
names[0] = "a";
// 获取数组长度
System.out.println(names.length);
//一维数组元素的默认初始化值
/*
整型数组:0
浮点型数组:0.0
字符型数组:0 (不是 '0')
boolean数组:false
String数组(引用类型):null
*/
int[] arr = new int[3];
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
相关信息
- 关于 char 数组的输出:
char[] test = {'a','b'}; System.out.println(test); // ab System.out.println("" + test); // 地址值
- 数组复制:
Stream.arraycopy()
Arrays.copyOf()
Arrays.copyOfRane()
内存的简化结构:
一维数组内存实例:
2、多维数组
静态初始化,动态初始化
相关信息
二维数组 第一个 数必须有
二维数组初始化
静态初始化: int[][] arr1 = new int[][]{{1,2,3},{4,5}};
(a[0].length 等于 3,a[1].length 等于 2)
动态初始化:String[][] str2 = new String[3][];
String[][] str1 = new String[3][2];
int[] arr2[] = new int[3][2];
//二维数组的调用
System.out.println(arr1[0][1]);
//对二维数组中每个一维数组初始化
arr2[1] = new int[4];
//二维数组初始化
int[][] arr0 = new int[3][4];
double[][] arra = new double[3][];
System.out.println(arr0);//地址值
System.out.println(arr0[0]);//地址值
System.out.println(arr0[0][0]);//0
System.out.println(arra[0]);//null 引用数据类型默认值null
System.out.println(arra[0][0]);//报错,空指针异常
相关信息
关于二维数组初始化默认值:int[][] arr = new int[4][3];
- 外层元素的初始化值为:地址值
- 内层元素的初始化值为:与一维数组初始化值相同
int[][] arr = new int[4][0];
- 外层元素的初始化值为:null
- 内层元素的初始化值为:不能调用,报错。
二维数组的内存解析
相关信息
数组末尾元素的下标是arr.length-1
相关信息
数组的复制:
//不能直接 arr = arr2 赋值地址,本质为一个
int arr2 = new int[arr.length];
//for循环对每一个赋值
3、Arrays 工具类
java.util.Arrays 类为操作数组的工具类,包含了操作数组的各种方法(包括排序,查找等)。
4、数组中的常见异常
- 索引越界:
ArrayIndexOutOfBoundException
- 空指针异常:
NullPointerException
对于 int arr[4][];
- 调用
arr[0]
结果为 null - 调用
arr[0][0]
空指针异常
Powered by Waline v2.15.5