一、数组的动态初始化
1、声明
数据类型[] 数组名;或
数据类型 数组名[];
2、开辟空间
数组名 = new 数据类型[长度];//长度必不可少
3、手动赋值
数组名[下标] = 值;
4、使用(打印、运算、判断等)
System.out.println(数组名[下标]);
【注意事项】
① 数组的元素如果不赋值,也有默认值
int 0
double 0.0
char u0000
boolean false
引用类型 null
② 访问数组的元素时,下标必须在0——长度-1 的范围内,否则报数组下标越界的异常
③ 数组的长度,可以通过 数组名.length表示,提高代码的维护性
④ 数组的赋值和使用,往往可以通过搭配for循环一起操作
for(int i=0;i<数组名.length;i++){
//每一个元素表示为:数组名[i]
}
二、数组的静态初始化
步骤1:声明并初始化
语法:数据类型[] 数组名 = new 数据类型[]{值,值,值};
或 数据类型[] 数组名 = {值,值,值};
int[] arr = {3,4,5,6,100};
//int[] arr2 = new int[] {3,4,5,6,100};
步骤2:使用
for(int i=0;i<数组名.length;i++){
//每一个元素表示为:数组名[i]
}
三、数组的复杂使用
- 数组的赋值
int[] arr1={1,2,3}; int[] arr2=arr1; // 引用型赋值,赋的是地址
特点:
数组属于引用类型,数组型数据是对象,数组中的每个元素相当于该对象的成员变量。
基本类型的赋值,赋的是值(内容),其中一个变量对其更改不影响另外一个
引用类型的赋值,赋的是地址,两个引用共同指向一个地址(对象),所以其中一个引用对其更改影响另外一个
注意:如果希望引用类型赋值时,只赋内容,则可以使用循环赋值的方式,语法:
int[] array2 = new int[array1.length]; for(int i=0;i<array2.length;i++){ array2[i] = array1[i]; }
- 数组的反转
方式一:
for(int i=0;i<arr.length/2;i++){ //交换两个数 i vs arr.length-1-i int temp = arr[i]; arr[i] = arr[arr.length-1-i]; arr[arr.length-1-i] = temp; }
方式二:
//①创建一个新数组,长度=arr.length int[] newArr = new int[arr.length]; //②逆序赋值 /* i 0 arr.length-1 1 arr.length-2 */ for(int i=0,j=arr.length-1;i<arr.length;i++,j--){ newArr[j]=arr[i]; } //③将新数组的地址赋值给arr arr=newArr;
四、数组的高级使用
- 数组的添加
//----------------具体的添加业务---------- //①新建一个数组,长度=arr.length+1 int[] newArr = new int[arr.length+1]; //②依次为新数组的元素赋值 for(int i=0;i<arr.length;i++){ newArr[i] = arr[i]; } //③将add赋值到新数组的空位上 newArr[newArr.length-1] = add; //④将newArr的地址赋值给arr arr = newArr; System.out.println("添加成功!");
- 数组的插入
//----------------------具体的插入业务----------- //①创建新数组,长度=arr.length+1 int[] newArr = new int[arr.length+1]; //②循环赋值 for(int i=0;i<arr.length;i++){ newArr[i] = arr[i]; } //③循环后移 for(int i=newArr.length-1;i>index;i--){ newArr[i]=newArr[i-1]; } //④将新元素赋值到index位置上 newArr[index] = add; //⑤将newArr的地址赋值给arr arr = newArr; System.out.println("插入成功!");
五、二维数组
二维数组其实就是 一维数组的组合,也就是一维数组的定义类型又为一维数组
方式一:动态初始化
1.声明
数据类型[][] 数组名;或
数据类型 数组名[][];
数据类型[] 数组名[];
int[][] num; int[] num[]; int num[][];
2.开辟空间
情况1:固定列数
数组名 = new 数据类型[行数][列数];
情况2:不固定列数
数组名 = new 数类型[行数][];
3.赋值
情况1:固定列数
for(int i=0;i<nums.length;i++){//i:行数 for(int j=0;j<nums[i].length;j++){//j:列数 nums[i][j]=值; } }
情况2:不固定列数
for(int i=0;i<nums.length;i++){//i:行数 nums[i]=new 数据类型[长度]; for(int j=0;j<nums[i].length;j++){//j:列数 nums[i][j]=值; } }
4.使用(打印、求和、最值)
for(int i=0;i<nums.length;i++){//i:行数 for(int j=0;j<nums[i].length;j++){//j:列数 System.out.print(nums[i][j]); } }
方式二:静态初始化
1.声明并初始化
数据类型[][] 数组名={{},{},{}};
或
数据类型[][] 数组名=new 数据类型[][]{{},{},{}};
2.使用(打印、求和、最值)
for(int i=0;i<nums.length;i++){//i:行数 for(int j=0;j<nums[i].length;j++){//j:列数 System.out.print(nums[i][j]); } }