枚举
枚举是一个引用类型,
枚举是一个规定了取值范围的数据类型
枚举变量不能使用其他的数据,只能使用枚举中常量赋值,提高程序安全性
本质: 枚举是一个终止类,并继承Enum抽象类
枚举中常量时当前类型的静态常量
语法: 访问权限修饰符 enum 枚举名{ 属性1,属性2,...; }
注意:
枚举中必须要包含枚举常量,
也可以包含属性
方法(不一定是私有方法不过在枚举中方法无意义)
私有构造方法
枚举常量必须在前面,多个常量之间使用逗号隔开,最后分号可写可不写
注解
JDK1.5开始,Java增加了对元数据的支持,也就是Annotation
元数据:解释数据的数据就是元数据,如在Excel表中登记人的信息,如年龄,姓名,性别等,对应的信息有18,张 三,男.那么年龄这个字段名就是在解释18这个值的含义,那么年龄这个字段就是元数据
作用:他是代码里做的特殊标记,这些标记可以在编译,类加载,运行时在不改变原有逻辑的情况下,被读取, 并执行相应的处理,通过使用Annotation,程序员可以在源文件中嵌入一些补充的信息。
代码分析工具,开发 工具和部署工具可以通过这些补充信息进行验证或者进行部署。
Annotation类似于 修饰符一样被使用。 可以修饰: 包,类,构造方法,方法,成员变量,参数,局部变量的声明
系统定义的注解
@Override:验证该方法是否是重写的方法
@Deprecated:过时的
@SuppressWarnings("all"):去除警告
Lambda表达式
作用:简化了匿名内部类,将方法作为参数进行传递
特点: 不会生成CLASS文件
语法: (形参列表)->{方法体}
要求: 必须是一个函数式接口或只有一个抽象方法的抽象类 (父接口或父类中有且只有一个抽象方法)
缺点:对新手不够友善
方法引用
作用:简化Lambda表达式
要求:
1,Lambda表达式前提下
2,方法体只有一行代码
3,方法体中的该代码是调用方法,并且该方法的实现列表与lambda表达式的方法形参一致
如: interface 接口名{ void 方法名(形参列表); }
接口名 对象名 = new 接口名(){ public void 方法名(形参列表){ 类名.方法名2(实参列表); } };
Lambda表达式
接口名 对象名 = (形参列表)->{ 类名.方法名2(实参列表); };
此时形参列表与实参列表一致,此时使用方法引用
接口名 对象名 = 类名::方法名2;
缺点:对新手不够友善
流
Stream:流
特点:
与集合类似,但是集合中存储的是数据,而Stream中存储的是对数据的操作过程
如图: 原料 -> 工序1 -> 工序2 -> 工序n -> 产品
注意: 1,Stream不会存储数据
2,Stream不会改变原数据,他们会返回一个持有加工后数据的新Stream
3,Stream会延迟执行,会等到需要的结果才执行
使用步骤
创建:
新建一个Stream
中间操作:
在一个或多个步骤中,将初始Stream转换为另一个Stream的中间操作
终止操作:
使用一个终止操作来产生一个结果,该操作会强制之前的延迟操作立即执行.此后该Stream不能在使用
链条式开发//
链条式开发 new A().a().b().c().d().e();
Stream 开始
如何获取Stream对象
1,通过集合对象(Collection)的stream()或parallelStream()方法
代码: ArrayList arrayList=new ArrayList<>();
//并行流 (多线程操作)Stream stream = arrayList.parallelStream();
或 ArrayList list = new ArrayList();
Stream stream = list.stream();
2,通过Arrays工具类的静态stream方法
代码: String[] arr= {"aaa","bbb","ccc"};
Stream stream2=Arrays.stream(arr);
中间键
filter(断言型接口):过滤
limit(最大数量):限制只获取最大数量以前的数据
sorted()排序,默认从小到大,只能用integer
sorted(比较器):排序,不限制类型
结束 forEach(消费型接口)
函数式接口
概念:一个接口只有一个抽象方法
判断是否为函数式接口:
加@FunctionalInterface不报错,就是函数式接口
加@FunctionalInterface报错,不是函数式接口
消费型接口:
特点:抽象方法有形参,但是没有返回值 如:Consumer接口
断言型接口:
特点:抽象方法有形参,返回值为boolean 如:Predicate接口
供给型接口:
特点:抽象方法无形参,但是有返回值 如:Supplier接口
函数型接口
特点:抽象方法有形参,有返回值 如:Function接口