JAVA学习笔记------数组

时间:2023-02-25 10:19:20

一维数组

数组就是一个数据的集合,里面存放着同一种类型的元素,数组下标从0开始,可以通过下标来找到该元素。

1.基础部分:

1.静态、动态初始化

静态初始化:就是在定义数组后,一次性将数组元素赋值,系统自动判定其长度。如 : int[] is = new int[]{1,2,3};  或者 int[] is = {1,2,3};
动态初始化:在定义数组时只规定了数组长度。Int[] is = new int[3];这种情况下个元素由系统默认赋其初始值:整型为0,浮点型为0.0,char为空格(u/0000),boolean为false,引用数据类型为null。

2.静态vs动态初始化

静态:初始化时,直接赋值元素,数组长度由系统给定。
动态:初始化时,指定数组长度,元素初始值由系统默认给予。

3.获取指定下标上的元素

直接数组名加下标就可以取得指定的元素。

4.设置指定下标上的元素

就和普通的赋值语句一样。要用循环

5.遍历(for循环、增强for循环)

for循环和增强for循环的不同之处在于:
通过增强for循环无法直接操作数组元素,不能修改数组中的元素,而for循环是直接与数组下标打交道,可以修改数组内元素。

6.可变参数

不能同时有两个可变参数,如果非要单独加一个值,加在前面

可变参数的正确表达形式:

public static void hhy(int num,int ...is2){
}
public static void hhy(int ...is){
}




2.排序:

1.冒泡

N个数字进行n-1轮排序
每一轮结束后最后一位为该次排序中的最大值,即每次排序生产一个最大值放于末尾。
外层:0---length-1
内层:0---length-1-i



2.选择

定义一个变量来表示当前一轮中的最小值的下标,如果一轮结束后最小值不是当前第一位元素,则交换当前第一位和该轮最小值
特点,不用边比较边交换值,内层循环执行完一次才考虑交不交换值。
外层:0----length-1

内层:i+1-------length


3.插入

特点,排序的过程中部分有序,从头开始,先排前面两位,后面按插队处理,相互比较,每一轮后有序的数增加一位
外层:0----length-1
内层:i+1----------0;



3.查找:

1.顺序查找

很简单,就是逐个遍历,比较,利用循环。

2.二分法查找

要先排序,查找时需定义 start  middle  end,
循环条件(start <=end)
初始时start=0; end=length-1; 
每次比较值下标为middle = (start+end)/2;



4.Arrays工具类(学会使用API)

.sort();给数组排序
.fill();给数组中的元素全部赋值

工具类的使用方法:

1. 找到所属包
2. 查看一个方法是否是静态的
3. 返回值类型是什么
4. 参数是什么
5. 每个方法的含义要看懂

5.学生管理系统

1.分析需求
1.1增
     判断输入姓名是否合法
     判断当前输入姓名是否已被使用
     考虑扩容的问题
     返回操作结果true  or   false


1.2删
     判断输入姓名是否合法
     查询当前是否存在此人
     删除此人,并将其之后的元素各向前移动一位
返回操作结果true  or   false


1.3改
     判断输入姓名是否合法,是否存在于数组中
     判断修改后名字是否合法,是否与数组中元素重名
     查询该姓名,得到下标后替换     

    返回操作结果true  or   false


1.4查

    循环遍历,比较,有则返回其下标,无则返回-1


1.5遍历

      循环遍历

2.列出方法
3.实现方法里的具体功能