JAVA中的数组
数组
概念:内存中一段连续的空间,可以保存多个相同类型的数据
一、使用方法
1、数组的声明
语法:数据类型[] 数组名;
int[] a;//推荐使用的声明方式 int []a; int a[];
2、为数组手动分配空间
语法: 数组名 = new 数据类型[ 长度 ];
长度:是一个整数,用来约束数组的空间大小(容量)
int[] a; a = new int[10];//为a数组分配10块内存空间,每块空间中可以存储一个数据 int[] b = new int[5];//声明同时分配空间
数组的每块空间中可以保存一个数据,我们将保存在数组中的数据称之为数组的元素。
我们向数组中添加数据或移除数据称之为访问数组的元素。
3、数组的下标
数组为每块空间分配的编号,从0开始到数组长度-1结束,自动生成。
长度为4的数组:
public static void method1(){
int[] a = new int[4];
a[0] = 10;
a[1] = 20;
}
使用下标访问数组中的元素:
4、数组的长度
语法:数组名.length
得到一个int类型的数据,代表该数组的长度
int[] a = new int[10]; System.out.println( a.length );//10
5、其他声明/初始化方式
//1、声明数组并分配空间、
//语法:数据类型[] 数组名 = new 数据类型[长度];
int[] a = new int[10];
//2、显式初始化
//语法:数据类型[] 数组名;
// 数组名 = new 数据类型[]{值1, 值2,值3.....};
//根据值的数量分配等量的空间
int[] a;
a = new int[]{10,55,40,90};
//3、显式初始化【简写】
int[] a = {10,55,60,90};
二、数组特性
1、默认值
数组在分配空间时,会根据数据类型为每个空间赋予默认值
例:0就是int类型数组元素的默认值
其他数据类型默认值:
类型 默认值 整数类型 0 小数类型 0.0 布尔类型 false 字符类型 ‘\u0000’ 引用类型 null(空)
2、数组的引用
概念:数组名就是数组的引用,该引用指向了数组内存空间的首地址。
数组通过 首地址 + 下标 * 数据类型所占字节数 能够计算出该元素在内存中的位置,进而从内存中可以获取该元素。基本数据类型:直接传递数据,有一方改变不影响另一方
引用数据类型:传递地址,有一方改变影响另一方
三、数组的使用
1、数组作为函数的参数
作用:一次性可以接受多个相同类型的数据
例:计算一个人该月的消费总额
//写一个函数,负责计算一个月的消费总额 //数组类型参数,一次性接收多个相同类型的数据 public static void total(double[] ds){ double sum = 0; for(int i=0; i<ds.length; i++){ sum+=ds[i]; } System.out.println("您该月的消费总额为:"+sum); }
2、数组作为函数的返回值
作用:一次性可以返回多个相同类型的数据
例:返回1~n以内能被3整除且不能被5整数的整数
//写一个函数接受一个整数n, //返回1~n以内的所有能被3整除且不能被5整除的数字 public static int[] ma(int n){ //记录1~n以内符合条件的数字有多少个 int count = 0; for(int i=2; i<n; i++){ if(i%3==0 && i%5!=0) count++; } System.out.println("满足条件的整数个数为:" + count); //a数组保存满足条件的数字 int[] a = new int[count]; int index = 0; for(int i=2; i<n; i++){ if(i%3==0 && i%5!=0){ a[index] = i; index++; } } return a; }
3、数组扩容
当数组容量不够时应对其进行扩容操作
扩容步骤:
1)准备一个更大的数组
2)将原数组中的元素拷贝到新数组中
3)将新数组的引用赋值给原数组
例:
int[] b = new int[4]; b[0]=10; b[1]=20; b[2]=30; b[3]=40; //对数组进行扩容 //步骤: // step 1: 准备一个更大的数组 int[] newArray = new int[b.length*2];//新数组长度是原数组长度的两倍 // step 2: 将原数组中的元素拷贝到新数组中 for(int i=0; i<b.length; i++){ newArray[i] = b[i]; } // step 3: 将新数组引用赋值给原数组 b = newArray;
其他扩容方式
1)System.arraycopy(…)
作用:将一个数组中元素拷贝到另外一个数组中
语法:System.arraycopy(原数组引用 , 拷贝起始下标 , 新数组引用 , 粘贴起始下标 , 拷贝数量);2)java.util.Arrays.copyOf(….)
作用:自动创建一个新的数组,将原数组内容拷贝到新数组中,将新数组返回给调用者
语法:java.util.Arrays.copyOf(原数组引用,新数组长度);
四、二维数组
二维数组是一维数组中的一维数组
用一个一维数组将若干的一维数组保存起来形成一个整体(二维数组)
1、使用方法:
1)二维数组的声明
数据类型[][] 数组名; int[][] a;
2)为高维数组分配空间
数组名 = new 数据类型[高维长度][] a = new int[4][];
3)创建多个低维数组保存到高维数组的每一个元素中
数组名[高维下标] = 低维数组; a[0] = new int[]{1,2,3}; a[1] = new int[3];
4)访问数组中的元素
数组名[高维下标][低维下标]; int b = a[0][0]; System.out.println(a[0][1]);
5)遍历二维数组
int[][] a = new int[4][]; a[0] = new int[]{10,50,90}; a[1] = new int[]{0,0,1}; a[2] = new int[]{90,90,100}; a[3] = new int[]{50,48,10}; for(int i=0; i<a.length; i++){ for(int j=0; j<a[i].length; j++){ System.out.print(a[i][j]); } }
2、二维数组其他使用方法
1)不规则二维数组
int[][] a = new int[4][]; a[0] = new int[4];//a[0] 数组长度为4 a[1] = new int[2];//a[1] 数组长度为2 a[2] = new int[5]; a[3] = new int[1];
2)声明同时分配高、低维数组空间
数据类型[][] 数组名 = new 数据类型[高维长度][低维长度]; int[][] a = new int[4][3];//创建一个四行三列构成的二维数组
3)显示初始化
数据类型[][] 数组名 = new 数据类型[][]{{一行一列值,一行二列值,一行三列值},{二行一列值...}}; int[][] a = new int[][]{ {1,2,3}, {4,5,6}, {7,8,9} }; 【简写形式】 数据类型[][] 数组名 = {{一行一列值,一行二列值,一行三列值},{二行一列值...}};
上一篇: 小程序 SB指数计算器
下一篇: java中的数组