(50人评价)
Java8新特性
价格 免费

java8新特性

  1. 内存结构
  • hashmap
[展开全文]

lambda表达式

匿名函数,可以传递的代码

好处: 让代码简洁,灵活

使用前提:

   匿名内部类

   

 

 .

[展开全文]

Java8 内置的四大核心函数式接口
Consumer<T> :消费型接口
void accept(T t);
Supplier<T> :供给型接口
T get();
Function<T, R> :函数型接口
R apply(T t);
Predicate<T> :断言型接口
boolean test(T t);
 

[展开全文]

*左侧: Lambda表达式的参数列表
”右侧: Lambda 表达式中所需执行的功能,即Lambda 体
*语法格式一:无参数,无返回值
*
() -> System.out.println("Hello Lambda!");
*
寨语法格式二:有一个参数,并且无返回值
(x) -> System. out.println(x)
家语法格式三:若只有一个参数,小括号可以省略不写
x -》System. out. println(x)
*语法格式四:有两个以上的参数,有返回值,并且Lambda体中有多条语句
Comparator<Integer> com = (x, y) -> {
System. out . println("函數式接口");
return Integer.compare(x, y);
};
*语法格式五:若Lambda 体中只有一条语句,return 和大括号都可以省略不写
Comparator<Integerr com = (x, y) -> Integer .compare(x, y);
*语法格式六: Lambda 表达式的参数列表的数据类型可以省略不写,因为JVM编译器通过上下文推断出,数据类型,即“类型推断”
(Integer X; Integer y) -> Integer .compare(x, y);
 

[展开全文]

Lambada表达式

lambada需要有接口的支持 

参数列表 (接口中抽象方法中的参数列表)->执行的功能 (需要对抽象方法实现的功能 )

在匿名内部类中,运用同级别的变量,默认final

jdk1.7之前必须是final jdk1.8不用加 默认  

 

[展开全文]

Lambda 匿名函数

举例 匿名内部类   数组转集合方法:

arrays.asList(可变参数 ) 

 

设计模式优化

匿名内部类优化  可读性差

lambda  

stream API

[展开全文]

1、取消永久区,变成元空间 MetaSpace ,元空间快要满时,采用垃圾回收机制,回收腾出物理内存,可以提升效率,降低内存溢出异常概率

2、JDK1.8中PermGenSize无效、MaxPremGenSize、无效。

变成MetaspaceSize、MaxMetaSpaceSize

[展开全文]

Stream

一系列流水线式的中间操作

原来的数据源不会改变,会产生一个新流

“集合讲的是数据,流讲的是计算”

 

[展开全文]

Lambda是一个匿名函数

是一段可以传递的代码

 

[展开全文]

函数式接口:只有一个抽象方法?

 

操作符:->   该操作符为箭头操作符
拆分成俩部分,
左侧:Lambda的参数列表

右侧:

Lambda所需要执行的功能,称为Lambda体

语法格式一:五参数,无返回值

Lambda:

()->Systeam.out.peintln("HELLO")

语法格式二:有一个参数,无返回值

Lambda:

(x)->System.out.println()

语法格式三:若只有一个参数,小括号可以不写,无返回值

x->System.out.println()

语法格式四:有俩个以上的参数,有返回值,并且Lambda有多条语句

(x,y)->.{

System.out.println()

return Integer.compare(x,y)

}

语法格式五:若只有一套语句,则大括号,return都可省略

语法格式六:

Lambda表达式的参数列表的数据类型可以省略不写,因为JVM编译器通过上下文推断出,数据类型,即‘类型推断’

左右遇一括号省,

左侧推断类型省,

 

二Lambda表达式需要函数式接口支持

函数是接口:只有一个抽象方法时,就成为函数是接口

可以使用注解@FunctionalInterface 修饰

可以接查是否是函数式接口

 

注意事项:

在局部内部类中调用同级变量

jdk1,7以前必须是final

jdk1.8现在默认加了final

 

[展开全文]
package com.atguigu.java8

import java.util.Comparator;

improt org.junit.Test;

public class TestLambda[

lambda: 

# project java8 /  pacage  /class

匿名内部类

匿名类<参数类型>  实现他的方法 : 

//匿名内部类
 
comparator<Interge> com = new comparator<Interge> (){
     @override
     public int compare(Integer 01, Integet 02 ) { 

   }
}

最后的解决方法是: 设计模式  写个接口带泛型的接口 策略设计模式 

[展开全文]

在使用Lambda表达式的时候,它需要创建一个函数式接口(一个接口中只有一个抽象方法,那么我们就称之为函数式接口。)

Lambda表达式的结构:

参数列表 -> Lambda体

参数列表就是抽象方法中的参数列表,而Lambda体就是抽象方法被实现的方法体,它相当于实现了一个接口中的抽象方法。

那么如果一个接口中有很多的方法,它实现的是那个方法呢?

无参数无返回值的语法格式:

() -> {...};

有参数无返回值的语法结构:

(参数)  -> {...};或如果只有一个参数小括号可以省略不写。

若Lambda有多个参数,且有返回值,方法体只有一条语句,return 和{}都可以不写。

[展开全文]

java8比java7效率快很多

而且没有堆得永久区,,java8运用的是物理内存,也叫元空间,当做永久区

[展开全文]

-> 箭头操作符,lambda 操作符

左侧: 参数列表

右侧:抽象方法实现的功能

 

 

[展开全文]

Optional类

作用:避免空指针异常

[展开全文]

lambada 表达式

左侧:参数列表
右侧:所要实现的功能
 

[展开全文]
业界大牛亲自授课
前沿技术实时更新
足不出户学编程
关注尚硅谷微信 一键下载全部视频教程

关注尚硅谷微信

一键下载全部视频教程