03_数组

三、数组

3.1 数组理解

  1. 数组属于 引用数据类型 的变量。数组的元素,既可以是 基本数据类型 ,也可以是 引用数据类型。
  2. 创建数组对象会在内存中开辟一整块连续的空间。
  3. 数组的长度一旦确定,就不能修改。

3.2 一维数组

3.2.1 数组初始化

1、静态初始化(数组的初始化和数组元素的赋值操作同时进行)

int[] ids;
ids = new int[]{1001,1002,1003,1004;

2、动态初始化(数组的初始化和数组元素的赋值操作分开进行)

String[] names = new String[5];

Java中数组角标从 0 开始,到 length-1 结束

3.2.2 数组元素的默认初始化值

int[] arr= new int[4];
for(int i=0;i< arr.length;i++){
	System.out.println(arr[i]);
}
//输出:0 0 0 0
数组元素类型 初始化值
基本数据类型
整型 0
浮点型 0.0
char型 0(数字) 而非 '0'(字符)
boolean型 false
引用数据类型 null(关键字)
String null

3.2.3 数组内存结构

  • 栈(stack):局部变量(方法里的变量)

  • 堆(heap):new出来的结构(对象、数组)

3.3 多维数组

3.3.1 二维数组的初始化

//一维数组初始化
int[] arr = new int[] {1,2,3};
//二维数组——静态初始化
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
//二维数组——动态初始化1
String[][] arr2 = new String[3][2];
//二维数组——动态初始化2
String[][] arr3 = new String[3][];
//要么赋值,要么规定长度

//也是正确写法(类型推断)
int[] arr4[] = {{1,2},{3,4},{5,6,7}};

//数组长度
System.out.println(arr1.length);//3
System.out.println(arr1[1].length);//2

System.out.println(arr1[0][1]);//2
System.out.println(arr2[1][1]);//null
System.out.println(arr3[1][0]);//空指针异常

3.3.2 二维数组默认初始化值

int[][] arr = new int[4][3];
System.out.println(arr[0]);//[@16进制地址值
System.out.println(arr[0][0]);//0
System.out.println(arr);//[[@16进制地址值

针对初始化方式一:int[][] arr= new int[4][3];

​ 外层元素初始化值:地址值

​ 内层元素初始化值:与一位数组初始化值相同

针对初始化方式二:int[][] arr = new int[4][];

​ 外层元素初始化值:null

​ 内层元素初始化值:不能调用,否则报错(空指针异常)

3.4 数组Arrays工具类使用

方法 功能 底层实现
boolean equals(int[]a , int[]b) 判等 地址、非空、长度
String toString(int[] a) 输出数组 遍历
void fill(int[] a , int val) 替换 全部替换
void sort(int[] a) 对数组排序 快排
int binarySearch(int[] a , int k) 找值为key索引 ≥0:找到 <0:未找到

3.5 数组常见异常

3.5.1 数组角标越界异常:ArrayIndexOutOfBoundsExcetion

int[] arr= new int[]{1,2,3,4,5};
 for(int i=0;i<=arr.length;i++){
 	System.out.println(arr[i]);
 }
 System.out.println(arr[-2]);

3.5.2 空指针异常:NullPointerException

情况一:

int[] arr1 = new int[] {1,2,3};
arr1 = null;
System.out.println(arr1[0]);

情况二:

int[][] arr2 = new int[4][];//内层没有初始化
System.out.println(arr2[0][0]);

情况三:

String[] arr3 = new String[]{"AA","BB","CC"};
arr3[0] = null;
System.out.println(arr3[0].toString());
posted @ 2022-10-16 16:33  榆钱儿。  阅读(39)  评论(0编辑  收藏  举报