数组的定义: 是内存中一次能存多个相同类型元素的容器
一维数组:
声明数组:
方式一: 数据类型[] 数组名; 推荐
例如: int[] arr;
double[] adds;
String[] strs;
读法: 声明int类型的一维数组,名字叫:arr
方式二: 数据类型 数组名[];
例如: int arr[];
读法: 声明int类型,名字叫:arr的一维数组
-- 给数组赋值:声明 + 赋值
使用new关键字,创建数组:
格式: 数据类型[] 数组名 = new 数据类型[数组长度];
例如: int[] arr = new int[5];
double[] dous = new double[4];
String[] strs = new String[6];
使用直接赋值的方式创建数组:
标准写法: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,.....};
int[] arr4 = new int[]{1,2,3,5};
简化写法: 数据类型[] 数组名 = {元素1,元素2,.....};
int[] arr3 = {1,2,3};
注意事项:
1. 使用new关键字,创建数组是已知数组的长度,但是不知道具体的元素值
使用直接赋值的方式创建数组,已知数组中元素值,根据元素值的个数来创建数组空间
2. 在创建数组时, = 两边的数组的数据类型必须保持一致。
数组的基本使用
容器中元素的CRUD操作:
明确:因为数组的长度一旦确定不能改变。 ---> 数组中添加或者删除元素时,都会改变数组的长度
说明: 目前只学习查询和修改元素的操作,后面再学习删除和添加元素的操作
查询数组的长度: 数组名.length 例如:arr.length
查询数组中指定索引位置的元素:
说明: 索引index的范围:[0,arr.length -1]
格式: 数组名[index] 例如: arr[2]
注意: 数组种元素的查找效率非常快
修改数组中指定索引位置的元素:
格式: 数组名[index] = 新的值; 例如: arr[2] = 100;
容器中元素的遍历操作:
-- 从前往后拿出数组中的元素:
-- 从后往前拿出数组中的元素:
优势:可以操作索引 缺点: 格式比较复杂
-- 使用增强for遍历:
优势:格式比较简单 缺点: 无法操作索引 , 只能从前往后遍历
说明: 数组,集合等都属于容器, 可以存多个相同类型数据的容器
数组中元素的默认值
整数类型: byte , short ,int ,long 默认值: 0
小数类型: float , double 默认值: 0.0
字符类型: char 默认值:' ' , '\u0000'
布尔类型: boolean 默认值:false
引用数据类型:任何引用数据类型的默认值都是:null
数组中两个常见的小问题
-- 数组的索引越界异常 : ArrayIndexOutOfBoundsException
原因: 索引不在数组的正常索引范围内
解决: 让索引在数组的正确的索引范围内
-- 空指针异常: NullPointerException
原因: 数组或者对象的值为:null 不能指向内存中的数组或者对象空间
解决: 让数组 、 对象指向正确的内存地址值
main方法的形参
方法的可变参数
使用场景:将可变参数定义在方法的()的最后
例如: getSum2( String name,int... arr)
格式: 数据类型... 变量名
例如:int... arr
double... dous
String... strs
优点: 将方法的形参定义为可变参数,该方法不光可以接受:数组,还能接受多个参数值的列表
二维数组
int[][] school = {{1,2},{3,4,5}};
定义: 二维数组中的元素值 还是一个一维数组
学二维数组: 把二维数组当做一维数组来玩。
二维数组的创建:
使用new关键字创建:
数据类型[][] 数组名 = new 数据类型[m][n];
m: 二维数组中 小数组的个数 n : 每一个小数组长度都是n
例如: int[][] arr = new int[3][2];
说明: arr 是一个长度为3的二维数组, 每个索引位置都是一个长度为2的一维数组的内存地址hash值
数据类型[][] 数组名 = new 数据类型[m][];
例如: int[][] arr2 = new int[3][];
说明: arr2 是一个长度为3的二维数组, 每个索引位置都是null
使用直接赋值的方式创建
数据类型[][] 数组名 = {{} , {} ,{},...};
int[][] arr = {{1,2},null,{6,7}};
数据类型[][] 数组名 = new 数据类型[][]{{} , {} ,{},...};
二维数组的CRUD:
查询操作:
查二维数组长度: 二维数组名.length
查二维数组元素: 二维数组名[二维数组的索引]
查二维数组中小数组的元素: 二维数组名[二维数组的索引][小数组的索引]
修改操作
修改二维数组元素:
格式:二维数组名[二维数组索引] = new 数据类型[]{元素1,元素2,...};
例如:arr[1] = new int[]{3,4,5};
修改小数组元素:
格式: 二维数组名[二维数组索引][小数组索引] = 值;
例如: arr[0][1] = 200;
二维数组的元素的遍历:
参考一维数组的遍历
思路:
1.外层循环遍历二维数组:arr , 得到每一个小数组
2.内层循环遍历每一个小数组: arr[i] , 得到每一个小数组中的元素值