java8 default 修饰符,JDK1.8新特性 lambda表达式 局部内部类中的变量修饰符

jdk1.8新特性

1.Lambda表达式

1.简介

语法糖 也叫作糖衣语法

指的是 在计算机语言中 添加某种语法

这种语法 能使程序员更方便的使用语言开发程序

同时,增强了代码的可读性 避免了出错的机会

但是,这种语法对于语言的功能并没有增强

泛型 <>

自动装箱拆箱

增强for循环

2.Lambda表达式 λ

本身就是数学的概念

也叫作 目标类型(target type)

3.语法格式

基本格式

(参数列表)->{方法体};

解释:

1. “->” 表示 转为/成为

左边指定输入的参数 右边是Lambda的方法主体

2.()形参列表 0个/N个

3.{}是方法体语句

注意:

1. 只有是函数接口(当一个接口中 只包含一个方法时 该接口叫做函数接口) 才能使用Lambda表达式替换

格式:

()->{}

1.(参数列表)->表达式

花括号可省略 省略后 不能书写return关键字

2.形参列表的类型声明 可省略 java在编译的时候 会根据上下文 自动推断出参数类型

3.小括号可省略 形参列表是一个的时候可省略

4.return关键字

如果是单一表达式 可不写

如果写了return 就必须写花括号

4.Lambda表达式的基本应用

4.1 线程中的使用

4.2 forEach方法在集合中的使用

Iterable 1.8新增方法

default void forEach(Consumer super T> action)

Map 1.8新增方法

default void forEach(BiConsumer super K,? super V> action)

4.3 集合的排序

List集合出现自有的排序方法sort() 可根据Comparator比较器顺序进行排序

4.4 数组的排序

4.5 特殊的双冒号:: 方法引用

这是java8的Lambda表达式写法 叫做方法引用 (method references)

是Lambda的简写形式

注意:

1.是Lambda的简写形式

2.调用一个已存在的方法

3.当我们需要引用的方法传入其他类型参数的时候 不适合

语法:

左边是容器(类名/实例名)

中间::

右边是要调用的方法名

1.非静态方法调用

对象的引用::方法名

想要调用该对象所属类的一个已存在方法

例如:

Object obj = new Object();

obj.equals(o2);

方法引用

obj::equals;

Person类 getName()方法

Person p = new Person();

p.getName();

Lambda写法

(Person p)->p.getName();

方法引用

p::getName;

2.静态方法调用

类名::方法名

例如:

String.valueOf(i)

Lambda

(i)->String.valueOf(i);

简写模式

String::valueOf

3.构造方法调用

类名::new

Student s = new Student();

例如:

String s = new String();

()->new String();

方法引用

String::new

2.局部内部类中变量的修饰符

final修饰符可省略

内部类在访问 它所在的方法中的变量时 该变量必须是常量(被final修饰的)

jdk1.8之后 省略了final修饰符 但是本质上该变量还是final的

3.接口支持静态方法 与 默认方法

static

default

接口中的方法 可以用 abstract / default / static 修饰

修饰符不能混合使用

被abstract修饰的方法 子类必须重写

被default/static修饰的方法 子类可以选择性重写

重写default修饰的方法时 权限修饰符必须是public

4.Time包下的类

jdk1.8新增了一些处理时间问题的专门类

Time包下

LocalDate 代表的是 不带时间的日期 yyyyMMdd

LocalTime 代表的是 不带日期的时间 HH:mm:ss

LocalDateTime 包含了日期与时间 不过没有带时区

ZonedDateTime 包含了 日期与时间 带时区

5.Stream接口

和Iterator很像

Stream (流) 和 InputStream/OutputStream 没有关系

Stream 表示能应用在一组元素上一次执行的操作序列

Stream 提供了很多Lambda表达式方法

操作分为 中间操作 和 最终操作两种

中间操作 返回 —> Stream 本身

filter / stream / distinct / sorted

最终操作 返回 —> 一个特定类型的计算结果

count / iterator / limit / match / max / min / findFirst / collect

创建一个Stream 需要指定一个数据源 比如Collection的子类

List 和 Set

Map不支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值