版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年从奶茶到波士顿龙虾:长江无人机外卖运营模式深度解析
- 2026年健全社保关系转移接续政策跨省通办指南
- 2026年养老社区CCRC模式八大风险识别与防控预案
- 2026年10分钟完成体检家门口便捷检查设备操作语音提示适老化
- 2026年国家空域基础分类方法详解:A B C D E G类空域划分标准与应用
- 2026年2℃ 1.5℃温控情景在气候韧性评估中的应用方法
- 2026年光固化打印机操作与保养指南
- 2026年CCRC养老社区分类与评价标准体系解读
- 2026年电子能量损失谱测量纳米材料带隙技术
- 2026浙江台州市温岭市滨海镇招聘编外工作人员1人备考题库附参考答案详解【模拟题】
- 会计毕业实习报告1000字(30篇)
- 北师大版六年级下册《正比例》课件市公开课一等奖省赛课获奖课件
- 颌面部骨折围手术期的护理
- 地铁行业沟通技巧分析
- 2023年六年级小升初自荐信简历
- 清明时节 奠说巴人获奖科研报告
- 主蒸汽管道更换施工方案
- 如何给领导拍照
- 初中校本课程-【校本课程】春节教学课件设计
- 注塑模具相关零件加工工艺过程卡片
- 急性上消化道出血中心建设PPT文档
评论
0/150
提交评论