




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JAVA8技术分享,About me,邓海二,OSChina.NET架构师,关注java发展动态以及最新技术,个人博客:,Java SE 8,自java5以来最大的版本变动 很大程度增强java类库 主要目标 更高的开发效率 更高代码可靠性 更好利用多核和多处理器系统 代码不再串行执行,Lambda表达式,函数式接口:只包含一个方法的接口 语法:(parameters)-expression或者(parameters)-statements; 方法引用 跟 lambda 表达式一样的 语法:ObjectReference:methodName,以前的做法: new Thread(new Run
2、nable() Override public void run() System.out.println(“实现的线程 ); ).start(); Lambda实现方式: newThread()-System.out.println(lambda实现的线程).start();,默认方法,提供相应机制将新方法添加到现有接口 未破环向后兼容性 为 Java 提供行为及类型(而不是状态!)的多继承,public interface A default void foo() System.out.println(Calling A.foo(); public class Clazz implemen
3、ts A public static void main(String args) Clazz clazz = new Clazz(); clazz.foo();/调用A.foo() ,抽象类与接口区别,类型注解,批注当前只能用在类型声明上 类、方法、变量定义 允许通过可插入的类型检查器进行错误检测 例如,空指针错误、争用条件,线程安全等,check framework,import checkers.nullness.quals.*; public class GetStarted void sample() NonNull Object ref = null; GetStarted.jav
4、a:5: incompatible types. found : Nullable required: NonNull Object NonNull Object ref = null; 1 error,泛型判断改进,1.支持通过方法上下文推断泛型目标类型 2.支持在方法调用链路当中,泛型类型推断传递到最后一个方法,Nashorn,高性能的轻型 JavaScript 引擎 集成到 JRE 使用现有 javax.script API 符合 ECMAScript-262 5.1 版语言规范 新命令行工具 jjs 可运行 JavaScript,ScriptEngineManager manager
5、= new ScriptEngineManager(); 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,JJS工具,jjs是一个基于标
6、准的Noshorn引擎,它接受javascript文件列表作为参数。作为例子,让我们创建一个func.js, 内容如下: function f() return 1; print( f() + 1 ); 运行这个文件,把这个文件作为参数传给jjs jjs func.js 输出结果如下 2,外部VS内部迭代,for (Orange o: orangebox) if (o.getColor() = GREEN) o.setColor(ORANGE); ,orangebox.forEach( o if (o.getColor() = GREEN) o.setColor(ORANGE); ),Stre
7、am API,对集合执行批量数据操作 仅仅代表着数据流,并没有数据结构 串行和并行实现,Stream通用语法,创建Strean,静态方法创建 Stream integerStream = Stream.of(1, 2, 3, 5); 来源Collection Stream integerStream =nums.stream(),转换Stream,distinct: 对于Stream中包含的元素进行去重操作,filter: 对于Stream中包含的元素使用给定的过滤函数进行过滤操作 map: 对于Stream中包含的元素使用给定的转换函数进行转换操作,聚合Stream,count方法 可使流的
8、结果最终统计,返回int,比如我们计算一下满足18岁的总人数。 int countOfAdult=persons.stream() .filter(p - p.getAge() 18) .map(person - new Adult(person) .count();,顺序流与并行流,List people = list.getStream.collect(Collectors.toList(); List people = list.getStream.parallel().collect(Collectors.toList();,long t0 = System.nanoTime(); /
9、初始化一个范围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, parallel 0.02s
10、,证明并行流确实比顺序流快 System.out.printf(serial: %.2fs, parallel %.2fs%n, (t1 - t0) * 1e-9, (t2 - t1) * 1e-9);,日期和时间 API,适用于 Java SE 平台的新日期、时间和日历 API 标准IOS日期格式 更流畅,实例不可变,线程安全 两个日期概念 机器时间, 比如Instant 人类自身的观念,比如LocalDate和LocalTime,标准IOS日期格式,方法前缀,of:静态工厂方法。 parse:静态工厂方法,关注于解析。 get:获取某些东西的值。 is:检查某些东西的是否是true。 wi
11、th:不可变的setter方法。 plus:加一些量到某个对象。 minus:从某个对象减去一些量。 to:转换到另一个类型。 at:把这个对象与另一个对象组合起来,例如: date.atTime(time)。,获取日期属性,设置日期属性,日期计算,新旧日期转换 Instant instant=new Date().toInstant(); Date date=Date.from(instant);,Base64,JDK实现 sun.misc.BASE64Encoder 和 sun.misc.BASE64Decoder javax.xml.bind.DatatypeConverter Java
12、 8在java.util 第三方实现 Apache Commons Codec library Google Guava net.iharder.Base64 号称Base64编码速度最快的MigBase64,Java.util.BASE64,/编码 StringasB64=Base64.getEncoder().encodeToString(somestring.getBytes(utf-8); 输出为:c29tZSBzdHJpbmc=,/解码 byteasBytes=Base64.getDecoder().decode(c29tZSBzdHJpbmc=); 输出为:somestring,性
13、能对比,Array.parallelSort,Arrays.sort使用归并排序 Array.parallelSort使用 Fork / Join框架 把数组分成4部分。 第一个两部分进行排序,然后将它们合并排序。 接下来的两部分进行排序,然后将它们合并排序。 上面的步骤递归地重复,直到部分类的大小不小于上述阈值计算。,消除永久代(PermGen space),不再需要调整其大小 当前对象移到 Java 堆或本地内存 JVM参数-XX:PermSize和 -XX:MaxPermSize被XX:MetaSpaceSize和-XX:MaxMetaspaceSize替换。,精简的JRE,紧凑的JRE分3种,分别是compact1、compact2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【高考生物】2026步步高大一轮复习讲义第八单元 生物与环境第47讲 生态系统的物质循环和信息传递含答案
- 【高考生物】2026步步高大一轮复习讲义66练第二单元 细胞的基本结构和物质的运输第二单元 课时练4 细胞膜与细胞核的结构和功能含答案
- 发展低空经济产业
- 【高考生物】2026步步高大一轮复习讲义第七单元 稳态与调节第41讲 植物生长素及其生理作用含答案
- 校园安全管理现状与挑战分析
- 孕早期知识课件
- 养老护理员全套培训课件
- 葫芦岛市新衡泰环保科技有限公司环境影响后评价报告环评报告
- 提高煤炭行业技能认证与职业资格体系建设
- 2025年中级银行从业资格之中级风险管理真题附答案详解【a卷】
- 高中英语全国高考考纲词汇3600汇总
- GB/T 35068-2018油气管道运行规范
- GB/T 13277.7-2021压缩空气第7部分:活性微生物含量测量方法
- 2023年娄底冷水江市广播电视台(融媒体中心)招聘笔试模拟试题及答案解析
- FZ/T 07019-2021针织印染面料单位产品能源消耗限额
- 特劳特战略定位总裁课程课件
- 陈宝光-TTT课程开发与设计(讲义)V2.1
- 六年级开学主题班会课件
- 公务员培训包过班协议书范本
- 银行物业服务方案
- 生理心理学(三版)教学课件全套电子教案汇总整本书课件最全教学教程完整版教案(最新)
评论
0/150
提交评论