查找:二分查找
课程回顾:
面向对象:封装、继承、多态
重载和重写
this和super
static和final
抽象类和接口
对象转型:向上,向下
内部类:
成员内部类
匿名内部类
静态内部类
局部内部类
今日内容:
数组:存储一组相同数据类型的数据结构
是引用数据类型
变与不变:
变:数组的元素的值可以改变
不变:数组的长度不可改变
使用数组的前提:
1、确定要存储的数据类型
2、确定长度
数组创建方式:
1、静态化创建
格式:数据类型[] 数组名={值1,值2,……};
2、动态化创建
声明格式:
数据类型[] 数组名;
数据类型 数组名[];
初始化格式:
数组名=new 数据类型[长度];
格式:数据类型[] 数组名[=new 数据类型[长度]];
length:长度,数组中元素的个数
下标:索引,位置:从0开始,范围:[0,length-1];
索引的范围不能超出,否则会报数组越界异常
获取数组元素值的格式:
数组名[索引值];
增强for循环:
遍历输出数组的元素的值
格式:for(数组元素的数据类型 变量名:数组名)
{
变量名记录的值就是数组中各个元素的值
}
优点:精简代码,全输出
缺点:无法访问索引
数组存储的可以是基本数据类型,也可以是引用数据类型(包括自定义的类)
数组存储的什么类型的数据那么元素就是什么类型的数据
练习:创建Student类,属性自定义,方法若干,请使用数组存储3名学生,并遍历输出
算法:
1、排序
1、冒泡排序
相邻的2个元素依次进行比较,将符合规则的放在左边或右边
核心代码:
for(int i=0;i<arr.length-1;i++)
{
for(int j=0;j<arr.length-1-i;j++)
{
if(arr[j]>arr[j+1])
{
交换
}
}
}
2、选择排序
每趟从待排序的元素中选择最小值(最大值)放在左边或右边
3、插入排序
每次都是将arr[i],和之前的数据进行比较,符合就插入到arr[0]到arr[i-1]
2、查找
1、顺序查找
就是按照索引的顺序,获取对应的元素的值进行比较找到就返回索引
2、二分查找
根据指定的起始索引和终止索引,计算中间索引,并且验证中间索引对应的值和要查找的值的关系
等于就找到了,其他就修改起始索引或终止索引的值
Arrays:数组工具类
包含一些操作数组对象的静态方法
常用:
sort:排序
toString:将指定数组对象转换为字符串
binarySearch:二分查找
copyOf:复制数组
命令行参数:main方法的参数
是一个数组,等价于可变参数
在java命令的时候,方可传值
可变参数:数量可以改变的参数
格式:数据类型... 参数名
在方法内部是一个数组
可变参数:
在实际调用中,可以不传递实参,也可以传递多个
还能只能传递数组对象
一个方法最多只有一个可变参数
,并且可变参数只能是最后一个参数
扩展:
命令行参数
可变参数