匿名内部类
没有名字的内部类
简化没有独自作用|功能的实现|子类
*new Smoking(){ //–匿名内部类的蕾体 是new后面的接口或者父类的实现类|子类的类体
@Override
public void cat() {
System.out.println(“吸猫…”);
}
}.cat();
interface Smoking{
void cat();
}
Lambda表达式
目标:简化匿名内部类
语法: ()->{}
() :–>重写的抽象方法的参数列表
-> :箭头符号,箭头函数,Lambda符号
{} :重写的抽象方法的方法体
前提:函数式接口
函数式接口:只有一个抽象方法的接口就是函数式接口
@FunctionalInterface : 强制检查是否为函数式接口
数组: []
相同数据类型的有序集合
变量: 存储单个数据
数组: 存储多个数据
数组的特点:
-
1.数组是引用数据类型
-
2.数组是定长的,长度一旦确定不可改变
-
3.数组中所有数据的数据类型保持一致
-
4.数组中的数据存在顺序(索引:从0开始)
-
数组的声明方式:
- 数据类型[] 数组名;
数据类型:可以是基本数据类型|引用数据类型
数据类型的作用:规定数组中所有数据的数据类型 - 数据类型 数组名[]; --不推荐使用
- 数据类型[] 数组名;
数组的初始化:
动态初始化:先创建后赋值
数据类型[] 数组名 = new 数据类型[长度];
数组中的数据如果不赋值有默认值 String–null,int–0,double–0.0 ,char–’ ',boolean–false
静态初始化:创建的同时赋值
-
数据类型[] 数组名 =new 数据类型[]{值1,值2,值3...};
-
数据类型[] 数组名 ={值1,值2,值3...}; --推荐
操作(获取|修改)数组中的数据
通过索引操作 数组名[索引|下标]
数组的长度:
数组名.length
数组中最后一个数据的下标:
数组名.length-1
数组的遍历:
1)普通for循环,可以获取可以修改,因为是操作索引(位置)
2)增强for循环|for…each ,只能获取每一个数据,不能修改
-
for(数据类型 变量名: 数组名|容器名){
-
变量-->指代数组中的每一个数据
-
}
可变参数:数据类型相同的0~多个参数
1.使用…表示可变参数
2.编译器会自动为可变参数隐式创建一个数组,通过操作数组的方式使用可变参数
3.可变参数必须放在参数列表的最后位置