课程目标
1.数组的概念
2.数组的声明与赋值
3.数组的组成
4.数组的遍历
5.数组的排序
6.数组的应用
是为什么使用数组
如何储存100名学生的成绩?
方法:使用变量储存,重复声明100个double类型变量即可.
缺点:麻烦,重复操作过多.
如何让100名学生成绩全部+1?
方法:100个变量重复相同操作,直至全部完毕
缺点:无法进行统一的操作
1.数组的概念
概念:一组连续的存储空间,存储多个相同数据类型的值.
特点:类型相同,长度固定
2.数组的声明与赋值
public class TestCreateArray{
public static void main(String[]args){
int[]a=new int[5];
}
}
3.数组的组成
数组中的每个数据格被称为"数组元素";
对每个元素进行赋值或取值的操作被称为"元素的访问";
访问元素时,需要使用"下标"(从0开始,依次+1,自动生成);
访问的语法:数组名[下标];//例如: 存 :a[0]=10,取a[0];
数组的使用
public class TestCreateArray{
public static void main(String[]args){
int[] a=new int[5];
a[0]=5;
a[1]=3;
a[2]=4;
a[3]=7;
a[4]=10;
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
System.out.println(a[3]);
System.out.println(a[4]);
}
}
下标的范围
有效下标范围:0~数组长度-1
访问无效下标,会导致数组下标越界
4.数组的遍历
遍历:从头至尾,逐一对数组的每个元素进行访问.
数组名.length 可动态获得数组长度
使用循环变量"i"充当下标,逐一访问数组中的每个元素.
数组的默认值
public class TestDefaultVaue{
public static void main(String[]args){
int[] a =new int[5];
for(int i=0;i<5;i++){
System.out.println(a[i]);
}
}
}
数组创建语法
1.先声明,再分配空间;
数据类型[]数组名;
数组名= new 数据类型[长度];
public class TestCreates{
public static void main(String[]args){
//先声明,再分配空间
int[]array1;
array1 = new int[4];
System.out.println(array1[0]);
}
}
2.声明并分配空间:
数据类型[]数据名 = new 数据类型[长度];
int[]array2=new int[4];
3.声明并赋值(繁):
数据类型[]数组名=new 数据类型[]{value1,value2,value3......};
int[]array3=new int[]{11,22,33};
for (int i =0;i<array3.length;i++){
System.out.println(array3[i]);
}
4.声明并赋值(简):
数据类型[]数组名={value1,value2,value3......};//显示初始化,注意:不可换行
int[]array4={77,88,99,1010};
for (int i=0;i<array4.length;i++){
System.out.println(array4[i]);
}
案例1:
给定一个整数数组,统计数组中所有元素的平均值.
public class TestGetAvg{
public static void main(String[]args){
int[] numbers=new int[]{88,99,1001,1111};
int sum=0;
for(int i=0;i<numbers.length;i++){
sum +=numbers[i];
}
double avg=sum/numbers.length;
System.out.println(avg);
}
}
运算结果:
案例2:
给定一个整数数组,读入一个整数n,如果n在数组中存在,输入下标,不存在则输入-1;
import java.util.Scanner;
public class TestSearch{
public static void main(String[]args){
Scanner input = new Scanner(System.in);
System.out.println("请输入一个整数:");
int n = input.nextInt();
int[] numbers = new int[]{1,2,3,4,5,6,7};
int index = -1;
//循环查找的过程
for(int i =0;i<numbers.length;i++){
if (numbers[i]==n){
//存在
index=i;//改变index,代表n所出现的下标
break;
}
}
System.out.println(index);
}
}
5.数组的排序
JDK排序:java.util.Arrays.sort(数组名);//JDK提供(升序)
降序:需要手工的方式来完成元素的倒序 1 2 3 4 5
import java.util.Arrays;
public class TestSort{
public static void main(String[]args){
int[] nums = new int[]{4,3,5,2,1};
//借助JDK提供的数组工具,进行排序
Arrays.sort(nums);
//第一次遍历(升序)
for(int i=0;i<nums.length;i++){
System.out.println(nums[i]);
}
//降序:需要手工的方式来完成元素的倒序 1 2 3 4 5
// 下标: 0 1 2 3 4
for(int i=0;i<nums.length/2;i++){//i=0
int temp = nums[i] ;//int temp=1;
nums[i] = nums[nums.length-1-i];
nums[nums.length-1-i]=temp;
}
//第二次遍历(降序)
for(int i=0;i<nums.length;i++){
System.out.println(nums[i]);
}
}
}
总结:
数组的概念:
一组连续的存储空间,存储多个相同数据类型的值。
数组的声明:
数据类型[]数组名 = new 数据类型[长度];
数组的访问:
赋值:数组名[下标]=值
取值:数组名[下标]
数组的遍历:
从头至尾,逐一对数组的每个元素进行访问.
数组的应用:
统计数组元素,查找数组元素,JDK排序,元素倒置.