Java学习24天枚举

枚举

枚举是一个引用类型,

枚举是一个规定了取值范围的数据类型

枚举变量不能使用其他的数据,只能使用枚举中常量赋值,提高程序安全性

本质: 枚举是一个终止类,并继承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接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值