1.数组的基本概念
1.1 定义
数组:存储数据的连续空间表示,数组中可以存储多个相同类型的数据。
数组也是一个变量,内存会给数组分配一段连续的空间,每个空间内存储一个数据
数据1 | 数据2 | 数据3 | 数据4 |
1.2 组成部分
1.标识符:即数组名,命名原则和变量名一样;
2.元素:即数组中的存储的每一个数据;
3.元素下标:数组在内存中是一段连续的空间,从0开始给空间编号,称之为索引,通过索引获取相应的元素
4.元素类型:描述的是数组中的元素类型,都是相同类型的
1.3 数组的声明方法及使用
1.3.1 声明数组
数据类型[ ] 数组名;或者:数据类型 数组名[ ];如:int[ ] nums;
1.3.2 分配空间
即定义数组的长度:数组名=new 数据类型[数组长度];如:nums=new int[5];
两步可以合并写(常见写法),即:
数据类型[ ] 数组名=new 数据类型[数组长度];
如:int[ ] nums=new int[5];//声明了一个长度为5的int类型的数组
1.3.3 赋值
数组名[元素下标]=数据;如:nums[0]=1;nums[2]=2;
注:
1.元素下标从0开始,最大值=数组长度-1。如果等于数组长度或者超过数组长度,则会出现数组下标越界异常。
2.整数型的数组,数组元素默认值是0;
3.浮点型的数组,数组元素默认值是0.0;
4.char型的数组,数组元素默认值是空格;
5.Boolean型的数组,数组元素默认值是false;
6.String型的数组,数组元素默认值是null。
声明数组、分配空间和赋值可以合并写
数据类型[ ] 数组名=new 数据类型[ ] {数据1,数据2,数据3,。。。,数据n};
注:{}前的[ ]中不能写数组长度,数组长度由{}中的数据个数决定
简写(常见写法):
数据类型[ ] 数组名= {数据1,数据2,数据3,。。。,数据n};
获取数组长度方法:数组名.length;
1.3.4 操作数据
通过操作数组名[元素下标]来进行
总结:数组的声明方法常用的有两种,即
数据类型[ ] 数组名=new 数据类型[数组长度];
数据类型[ ] 数组名= {数据1,数据2,数据3,。。。,数据n};
2.遍历数组
2.1 普通for循环
遍历数组的意思是:将数组元素按照下标依次输出
2.1 增强for循环
语法结构
for(数据类型 变量名:数组名或集合名){
对变量进行操作的代码块;
}
执行规律:将数组或者集合中的元素按顺序依次存储到变量中,然后操作这个变量就等同于操作数组或集合中的数据。
注意:增强for循环的执行效率要比普通for循环高
案例
3. 经典应用
3.1 获取数组中的最大值或者最小值
获取最大值思想方法:
1.先假定数组中的第一个元素是最大值;
2.从第二个元素开始依次和这个最大值进行比较,如果比最大值还大,就把这个元素替换为最大值
//获取数组中的最大值
int[] nums={21,24,10,23,45};
//1.假定第一个元素为最大值
int max=nums[0];
//2.将数组的元素依次和最大值比较,若比最大值还大,就将该元素赋值给最大值
for (int i = 0; i < nums.length; i++) {
if(nums[i]>max){
max=nums[i];
}
}
System.out.println("最大值是"+max);
获取最小值思想与最大值一样
//获取数组中的最小值
int min=nums[0];
for (int i = 0; i < nums.length; i++) {
if(nums[i]<min){
min=nums[i];
}
}
System.out.println("最小值是"+min);
3.2 删除数组中的一个元素
需求:删除数组中的某个元素,删除完这个元素之后,后面的元素依次往前移动一位
思想方法:
1.输入想要删除的元素的下标;
2.根据删除下标做判断,若是删除最后一个元素,直接将其赋值为相应的数组类型的默认值;若删除的不是最后一个元素,从删除位置的下标开始,依次将后一个元素向前移动一位;
3.最后一位赋值为该数组类型对应的默认值。
//删除数组中的某个元素,删除完这个元素之后,后面的元素依次往前移动一位
Scanner sc=new Scanner(System.in);
String[] strs={"hello", "java", "html", "css", "JavaScript"};
//第一步,输入你想删除的元素的下标
System.out.println("输入你想删除的元素的下标(0到4):");
int index=sc.nextInt();
//第二步,判断,如果删除元素下标为4的元素,将其赋值为数组String[]的默认值null
if(index==strs.length-1){
strs[strs.length-1]=null;
}
//如果删除的元素的下标是0到3,从删除的下标开始,将后面一个元素依次往前移动一位
for(int i=index;i<strs.length-1;i++){
strs[i]=strs[i+1];
}
//第三步,移动完后,最后一个元素赋值为null
strs[strs.length-1]=null;
//第四步,遍历数组
for (String string : strs) {
System.out.print(string+" ");
}