1、数组:指的是把一组相同数据类型,并且有相同含义数据放到一个数组变量中。
1) 定义:数组是一个变量,存储相同数据类型的一组数据。
2) 声明:声明一个数组就是在内存空间划出一串连续的空间
3) 数组的结构和基本要素
① 标识符:数组的名称,用于区分不同的数组。数组只有一个名称
② 数组元素:向数组中存放的数据,数组中的每个元素都可以通过下标来访问 。
③ 元素下标:对数组元素进行编号。元素下标标明了元素在数组中的位置,从0开始。
④ 元素类型:数组元素的数据类型,数组中的所有元素必须属于相同的数据类型。
数组长度:数组长度就是能够存放数据的最多个数,length=下标+1;注:数组长度固定不变,避免数组越界
2、使用数组四步走:
1) 声明数组:声明数组就是告诉计算机这一组数据的数据类型。
语法:数据类型[] 数组名;或者 数据类型 数组名[];
示例:int[] ban_62;
注:以上两种方法都可以声明一个数组,数组名是任意合法的变量名。
2) 分配空间:分配空间: 告诉计算机分配几个连续的空间,要存几个数。
(1)
- 数组名=new 数据类型[length];
示例:ban_62=new int[35]
- 声明和分配空间同时进行:
数据类型[] 数组名=new 数据类型[length];
数组长度一旦确定,就不能修改,最大下标=length-1;
例如: int ban_62 = new int[35];
3) 赋值
- 数组名[下标]=值;
- 循环赋值
- 声明、分配空间、赋值同时进行:
- n 数据类型 [] 数组名={值1,值2…};
-
n 数据类型 [] 数组名=new 数据类型[]{值1,值2,值3….};
注:第1种必须一行完成;第2种分配长度和直接赋值不能同时进行
4) 处理数据(数组的使用)
如:array[0]=array[0]*10;
数组长度=数组名.length;
数组排序:Arrays.sort(数组名); 导包:ctrl+shift+o
删除元素:
(1) 找到元素下标
(2) 元素下标开始,依次往前移动一格
(3) 把最后一个元素设置为0
(4) 打印删除以后的元素
插入元素:
(1) 新建一个新的空间加一的数组
(2) 找到要插入元素的下标
(3) 判断如果小于下标。
newArray[i]=array[i]
如果等于下标:
newArray[i]=插入的元素;
如果大于下标:
newArray[i]=array[i-1];
(4) 打印新的数组
数组插入算法
1) 通过比较找到插入位置
2) 将该位置后的元素后移一个位置
3) 将新歌插入到该位置
String[ ] musics = new String[]{"Island","Ocean","Pretty","Sun"};
String[ ] newMusics = new String[musics.length+1];//新歌曲数组
String music = ""; //保存用户输入的歌曲名称 ……
//通过比较找到插入位置
for(int i = 0; i < musics.length; i++){
if(musics[i].compareToIgnoreCase(music) > 0){
index = i; break;
}
}
//将该位置后的元素后移一个位置
for(int i = newMusics.length-1; i > index; i--){
newMusics[i] = newMusics[i-1];
}
//将新歌插入到该位置 newMusics[index] = music;
注:字符串比较方法:
compareTo( ) :不忽略大小写;
compareTolgnoreCase( ):忽略大小写。
二重循环
1) 定义:一个循环体内又包含另一个完整的循环结构。
2) 特点:外层循环变量变化一次,内层循环变量要变化一遍。
3) 语法:
使用:
- 完成一组数的排序(正序、逆序)
- 查询数组中的某一个值
- 修改数组中的某一个值
- 删除数组中的某一个值
- 在数组中插入一个值
- 查询最大值、最小值