和我一起了解Java8新特性PPT课件_第1页
和我一起了解Java8新特性PPT课件_第2页
和我一起了解Java8新特性PPT课件_第3页
和我一起了解Java8新特性PPT课件_第4页
和我一起了解Java8新特性PPT课件_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、和我一起了解,JAVA8新特性,1,Java SE 8,自java5以来最大的版本变动 很大程度增强java类库 主要目标 更高的开发效率 更高代码可靠性 更好利用多核和多处理器系统 代码不再串行执行,2,一、Lambda表达式,函数式接口:只包含一个方法的接口 语法:(parameters)-expression或者(parameters)-statements; 方法引用 跟 lambda 表达式一样的 语法:ObjectReference:methodName,3,以前的做法: new Thread(new Runnable() Override public void run() Sy

2、stem.out.println(“实现的线程 ); ).start(); Lambda实现方式: newThread()-System.out.println(lambda实现的线程).start(,4,二、默认方法,提供相应机制将新方法添加到现有接口 未破环向后兼容性 为 Java 提供行为及类型(而不是状态!)的多继承,5,public interface A default void foo() System.out.println(Calling A.foo(); public class Clazz implements A public static void main(Stri

3、ng args) Clazz clazz = new Clazz(); clazz.foo();/调用A.foo(),6,抽象类与接口区别,7,三、类型注解,批注当前只能用在类型声明上 类、方法、变量定义 允许通过可插入的类型检查器进行错误检测 例如,空指针错误、争用条件,线程安全等,8,check framework,import checkers.nullness.quals.*; public class GetStarted void sample() NonNull Object ref = null; GetStarted.java:5: incompatible types. f

4、ound : Nullable required: NonNull Object NonNull Object ref = null; 1 error,9,四、泛型判断改进,1.支持通过方法上下文推断泛型目标类型 2.支持在方法调用链路当中,泛型类型推断传递到最后一个方法,10,五、Nashorn,高性能的轻型 JavaScript 引擎 集成到 JRE 使用现有 javax.script API 符合 ECMAScript-262 5.1 版语言规范 新命令行工具 jjs 可运行 JavaScript,11,ScriptEngineManager manager = new ScriptEn

5、gineManager(); ScriptEngine engine = manager.getEngineByName( JavaScript ); System.out.println( engine.getClass().getName() ); System.out.println( Result: + engine.eval( function f() return 1; ; f() + 1; ),输出如下: jdk.nashorn.api.scripting.NashornScriptEngine Result: 2,12,JJS工具,jjs是一个基于标准的Noshorn引擎,它接

6、受javascript文件列表作为参数。作为例子,让我们创建一个func.js, 内容如下: function f() return 1; print( f() + 1 ); 运行这个文件,把这个文件作为参数传给jjs jjs func.js 输出结果如下 2,13,六、外部VS内部迭代,for (Orange o: orangebox) if (o.getColor() = GREEN) o.setColor(ORANGE);,orangebox.forEach( o if (o.getColor() = GREEN) o.setColor(ORANGE);,14,七、Stream API,

7、对集合执行批量数据操作 仅仅代表着数据流,并没有数据结构 串行和并行实现,15,Stream通用语法,16,创建Strean,静态方法创建 Stream integerStream = Stream.of(1, 2, 3, 5); 来源Collection Stream integerStream =nums.stream(,17,转换Stream,distinct: 对于Stream中包含的元素进行去重操作,18,filter: 对于Stream中包含的元素使用给定的过滤函数进行过滤操作 map: 对于Stream中包含的元素使用给定的转换函数进行转换操作,19,聚合Stream,count

8、方法 可使流的结果最终统计,返回int,比如我们计算一下满足18岁的总人数。 int countOfAdult=persons.stream() .filter(p - p.getAge() 18) .map(person - new Adult(person) .count(,20,顺序流与并行流,List people = list.getStream.collect(Collectors.toList(); List people = list.getStream.parallel().collect(Collectors.toList(,21,long t0 = System.nano

9、Time(); /初始化一个范围100万整数流,求能被2整除的数字,toArray()是终点方法 int a=IntStream.range(0, 1_000_000).filter(p - p % 2=0).toArray(); long t1 = System.nanoTime(); /和上面功能一样,这里是用并行流来计算 int b=IntStream.range(0, 1_000_000).parallel().filter(p - p % 2=0).toArray(); long t2 = System.nanoTime(); /我本机的结果是serial: 0.06s, paral

10、lel 0.02s,证明并行流确实比顺序流快 System.out.printf(serial: %.2fs, parallel %.2fs%n, (t1 - t0) * 1e-9, (t2 - t1) * 1e-9,22,八、日期和时间 API,适用于 Java SE 平台的新日期、时间和日历 API 标准IOS日期格式 更流畅,实例不可变,线程安全 两个日期概念 机器时间, 比如Instant 人类自身的观念,比如LocalDate和LocalTime,23,标准IOS日期格式,24,方法前缀,of:静态工厂方法。 parse:静态工厂方法,关注于解析。 get:获取某些东西的值。 is:

11、检查某些东西的是否是true。 with:不可变的setter方法。 plus:加一些量到某个对象。 minus:从某个对象减去一些量。 to:转换到另一个类型。 at:把这个对象与另一个对象组合起来,例如: date.atTime(time,25,获取日期属性,26,设置日期属性,27,日期计算,28,新旧日期转换 Instant instant=new Date().toInstant(); Date date=Date.from(instant,29,九、Base64,JDK实现 sun.misc.BASE64Encoder 和 sun.misc.BASE64Decoder javax.

12、xml.bind.DatatypeConverter Java 8在java.util 第三方实现 Apache Commons Codec library Google Guava net.iharder.Base64 号称Base64编码速度最快的MigBase64,30,Java.util.BASE64,编码 StringasB64=Base64.getEncoder().encodeToString(somestring.getBytes(utf-8); 输出为:c29tZSBzdHJpbmc,解码 byteasBytes=Base64.getDecoder().decode(c29t

13、ZSBzdHJpbmc=); 输出为:somestring,31,性能对比,32,十、Array.parallelSort,Arrays.sort使用归并排序 Array.parallelSort使用 Fork / Join框架 把数组分成4部分。 第一个两部分进行排序,然后将它们合并排序。 接下来的两部分进行排序,然后将它们合并排序。 上面的步骤递归地重复,直到部分类的大小不小于上述阈值计算,33,34,十一、消除永久代(PermGen space,不再需要调整其大小 当前对象移到 Java 堆或本地内存 JVM参数-XX:PermSize和 -XX:MaxPermSize被XX:MetaSpaceSize和-XX:MaxMetaspaceSize替换,35,十二、精简的JRE,紧凑的JRE分3种,分别是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论