数组是一段可以存放多个数据的结构;
1、特点:在内存开辟一段连续的内存空间;
2、语法:
(1)数据类型[] 数组名=new 数据类型[长度]
如 int[] scores=new int[5];
(2)数据类型[] 数组名={值,值,值}
如 int[] ages={27,32,40,36};
(3)数据类型[] 数组名=new 数据类型[]{值,值,值}
如:String[] names=new String[]{"tom","jack"};
3、获得数组中的数据:数组名[下标] 下标从0开始
如 int[] ages={27,32,40,36};
System.out.println(ages[2]); //输出:40
4、循环得到数组中的值
如 int[] ages={27,32,40,36};
//顺序输出
for(int i=0;i<ages.length;i++){
System.out.println(ages[i]); //27,32,40,36
}
//逆序输出
for(i=ages.length-1;i>=0;i--){
System.out.println(ages[i]); //36,40,32,27
}
5、注意事项:
(1)数组的长度是固定的,不能数组越界;
(2)在定义数组时没有赋值时,整型数组每个元素的默认值是0,浮点型默认值是0.0,boolean类型默认值是false,char类型默认是空格,引用类型默认值是null;
6、数组的算法
(1)得到数组中的最大值和最小值;
(2)方式:定义变量存储数组中的第一个元素,循环数组中的每个元素,通过判断比较,条件成立,重新为变量赋值;
如:
int[] nums= {6,5,2,3,7,1};
int max=nums[0];
for(int i=1;i<nums.length;i++) {
if(nums[i]>max) {
max=nums[i];
}
}
System.out.println("最大值是:"+max);
7、二维数组
(1)定义:在一个数组中,又嵌套另一个数组
(2)语法:
数据类型[][] 数组名=new 数据类型[][]{} ; //[][]可在数组名前后,如int[] nums[]、int nums[][]
数据类型[][] 数组名=new 数据类型[长度][];
int[][] nums=new int[][] {{1,9,4},{3,4,5,6,7}};
int[][] ages=new int[2][];
(3)得到二维数组中的值
int[][] nums= {{2,3},{5,4,2}};
for(int i=0;i<nums.length;i++) {
for(int j=0;j<nums[i].length;j++) {
System.out.print(nums[i][j]+"\t");
}
System.out.println();
}
8、数组工具 Arrays:
Arrays是对数组进行排序、填充、复制、比较的工具类;Arrays是一个静态类,里面的所有方法都可以直接通过类名.方法()得到;
(1)排序:Arrays.sort(数组名) 将数组中的元素按照从小到大的顺序排序
如:
int[] ages= {36,25,24,32,50};
Arrays.sort(ages);
System.out.println("从小到大排序:");
for(int i=0;i<ages.length;i++) {
System.out.print(ages[i]+"\t");
}
(2)输出字符串:Arrays.toString(数组名) 将数组中元素以字符串输出
如:System.out.println(Arrays.toString(ages));
(3)批量填充:Arrays.fill(数组名,开始下标,结束下标,填充值) 将指定元素填充到数组中的指定位置(下标位置的值不含在内)
如:
//指定位置填充,其它位置的值默认为0
int[] nums=new int[5];
Arrays.fill(nums, 1,3,7);
System.out.println(Arrays.toString(nums)); // [0, 7, 7, 0, 0]
//不指定位置,全填充
int[] nums=new int[5];
Arrays.fill(nums, 7);
System.out.println(Arrays.toString(nums)); // [7, 7, 7, 7, 7]