JDK14之前的写法: // 1。 (..).. }else{ ... } JDK14新特性: // 1.判断 if(obj instanceof String str){ //不再需要强转操作 // 2.如果类型匹配,直接使用 新特性: public class SwitchTest1 { public static void main(String[] args) { Fruit fruit = Fruit.GRAPE instanceof String s) { formatted = String.format("String %s", s); } return formatted; } 新特性 "Still remains\n" + "Within the sound of silence"; System.out.println(text1); 新特性
jdk1.7新特性 1 对集合类的语言支持; 2 自动资源管理; 3 改进的通用实例创建类型推断; 4 数字字面量下划线支持; 5 switch中使用string; 6 二进制字面量; 7 这个新的语言特性允许try语句本身申请更多的资源, 这些资源作用于try代码块,并自动关闭。 3 增强的对通用实例创建(diamond)的类型推断 类型推断是一个特殊的烦恼,下面的代码: Map<String, List<String>> anagrams = JDK 7将警告从call转移到了方法声明(methord declaration)的过程中。这样API设计者就可以使用vararg,因为警告的数量大大减少了。
""" 相当于字符串文字: "line 1\nline 2\nline 3\n" 3、动态CDS档案 目标: 提高应用程序类 - 数据共享(AppCDS)的可用性。 它可以通过调用 JapaneseEra.of(3)或获得JapaneseEra.valueOf("Reiwa")。 JDK13及更高版本将有一个新的公共领域来代表这个时代。 NewEra从2019年5月1日开始的日本时代的占位符名称“ ”已被新的官方名称取代。 这些新增内容包括4个新脚本,总共150个脚本,以及61个新的表情符号字符。U+32FF SQUARE ERA NAME REIWA从 12.0开始,12.1只添加一个字符。 11.2 新的keytool -showinfo -tls用于显示TLS配置信息的命令keytool -showinfo -tls添加了一个显示TLS配置信 息的新命令。
例如:当往一个接口中添加新的抽象方法时,原来实现该接口的类都会报错!这样就显得“牵一发而动全身”! 为了解决这一弊端,JDK在1.8版本中,对接口的功能进行了扩展! 静态方法不能被继承,不能被重写,只能使用接口名调用静态方法 3、JDK提供的常用内置函数式接口 3.1、为什么JDK要提供这些常用内置函数接口? Stream类的静态of()方法 直接传入多个字符串 传入一个字符串数组 传入一个整数数组 5.5、Stream的注意事项 1、Stream只能操作一次 2、Stream方法返回的是新的流 7.2、Fork/Join原理-工作窃取法 当执行新的任务时Fork/Join框架会将任务拆分分成更小的任务执行,并将小任务加到线程队列中,当多个线程同时执行时,就总会有线程先执行完毕,有线程后执行完毕 新的日期及时间API位于java.time包中,下面是一些关键类。
""" 相当于字符串文字: "line 1\nline 2\nline 3\n" 3、动态CDS档案 目标: 提高应用程序类 - 数据共享(AppCDS)的可用性。 它可以通过调用 JapaneseEra.of(3)或获得JapaneseEra.valueOf("Reiwa")。JDK13及更高版本将有一个新的公共领域来代表这个时代。 NewEra从2019年5月1日开始的日本时代的占位符名称“ ”已被新的官方名称取代。 这些新增内容包括4个新脚本,总共150个脚本,以及61个新的表情符号字符。U+32FF SQUARE ERA NAME REIWA从 12.0开始,12.1只添加一个字符。 11.2 新的keytool -showinfo -tls用于显示TLS配置信息的命令keytool -showinfo -tls添加了一个显示TLS配置信 息的新命令。
JDK10新特性 局部变量类型推断 引入并行 Full 应用程序类数据共享 线程本地握手 在备用存储装置上进行堆内存分配 基于Java的实验性JIT编译器 删除javah工具 JDK10新增API transferTo 该新特性的效果 线程本地握手是在 JVM 内部相当低级别的更改,修改安全点机制,允许在不运行全局虚拟机安全点的情况下实现线 程回调,使得部分回调操作只需要停掉单个线程,而不是停止所有线程。 除了DRAM之外,这种架构还将具有一 种或多种具有不同特性的非DRAM存储器。 该JEP的目标是无需更改现有的应用程序代码可以代替DRAM用于对象堆。 Main { public static void main(String[] args) { List<Integer> list=new ArrayList<Integer>(3) ; list.add(1); list.add(2); list.add(3); List<Integer> temp = List.copyOf
JDk8新特性 1.1. 函数式编程 1.1.1. 集合的foreach 1.1.2. lambda表达式轻松创建接口实例 1.1.3. 接口的默认方法和静态方法 1.1.4. Collectors 1.3.1. toMap 1.3.2. toList 1.3.3. toSet 1.3.4. groupingBy JDk8新特性 函数式编程 集合的foreach List distinct():去除流中重复的元素 sorted():对流的元素排序 forEach():对流中的每个元素执行某个操作 peek():与forEach()方法效果类似,不同的是,该方法会返回一个新的流 forEach()无返回 limit():截取流中前面几个元素 skip():跳过流中前面几个元素 toArray():将流转换为数组 reduce():对流中的元素归约操作,将每个元素合起来形成一个新的值 optional.isPresent()){ System.out.println(optional.get()); } 分组 和关系数据库一样,流也提供了类似于数据库中GROUP BY分组的特性
四大函数式接口 四、方法引用和构造器引用 五、StreamAPI 1.Stream介绍 2.Stream的三个操作步骤 2.1Stream创建 2.2Stream中间操作 六、新的日期
JDK9新特性 模块化系统 目标 步骤 模块化出现的背景与概念 模块化的概念 演示 小结 交互式编程 交互式编程的概念 Jshell工具使用 小结 多版本兼用jar的作用 基本使用方法 使用演示 java 应用场景:比如某个架构师开发了一个工具类MyUtils,该工具类里面使用了jdk9的新特性,这时候该工具在推广的时候会遇到很大的阻力,因为很多用户还没有升级jdk版本,JDK9推出了多版本兼用jar的特性就允许该架构师编写一个同类名的工具 MyUtils,并在该工具类中不使用jdk9的新特性,然后两个同类名的类一起打包成为一个jar,提供给用户去使用,这时候即可根据用户当前使用的jdk版本而选择不同的工具类了。 假设未来这个项目升级JDK 10,决定在A.java中使用Java 10的一些新特性,可以单独针对A.class进行语法升级,并将编译结果a.class放置在META-INF/versions/10/下面 = new String(inputStream.readAllBytes()); return str; } } } 如上的代码所示,我们使用了Java 9的两个新特性带有
JDK 18已经在今年的3月22日正式发布了。它是一个非长期支持版的JDK。 我在这篇文章将简述一下JDK 18中有哪些新特性,以供大家参阅与了解。 由于JDK 18不是LTS版本的SDK,所以你可能不会真正去使用它,但做为Java程序员,我们仍然有义务去了解它有哪些新特性。 JDK 18的新特性 所以,现在你应该清楚了,JDK 18是个非LTS版本,通常情况下,我们只会使用JDK LTS版本。但知道非LTS版本有哪些新特性,对我们Java程序员来说,也是非常有必要的。 JDK 18的新特性列表如下: 1. UTF-8 by Default 默认使用UTF-8字符编码 2. Simple Web Server 简单Web服务器 3. 但在JDK中,以前是做不到的,只能另外将其部署到nginx中,现在有了这个特性,一样也能做到了。还是挺方便的。 不过要记住,它不能取代nginx,也不能取代tomcat等生产用的服务器。 3.
目前JDK1.8被各大公司、各大项目纷纷使用,作为Java开发中使用最多的版本,细心的你,或许早已发现它与之前版本存在着较大的差异。如果能熟练掌握使用这些差异、新特性,你会发现另一片天地。 今天抽时间整理下,JDK1.8新特性究竟有哪些?并以【JDK1.8新特性】专题逐一展开讨论、学习。 (JDK1.8新特性常常在面试中被问及的频率很高哦) JDK1.8概述 JDK1.8,又称之为Java 8(我习惯叫它为JDK1.8,后续统一叫做JDK1.8),是Java语言开发的一个主要版本。 Oracle公司于2014年3月18日发布,它支持函数式编程,新的JavaScript引擎,新的日期API,新的Stream API等。 (num)); } } 新特性 JDK1.8新增了非常多的特性,本专题主要讨论以下几个: Lambda表达式:Lambda允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
如果能熟练掌握使用这些差异、新特性,你会发现另一片天地。今天抽时间整理下,JDK1.8新特性究竟有哪些?并以【JDK1.8新特性】专题逐一展开讨论、学习。 (JDK1.8新特性常常在面试中被问及的频率很高哦) JDK1.8概述 JDK1.8,又称之为Java 8(我习惯叫它为JDK1.8,后续统一叫做JDK1.8),是Java语言开发的一个主要版本。 Oracle公司于2014年3月18日发布,它支持函数式编程,新的JavaScript引擎,新的日期API,新的Stream API等。 举例如下,JDK1.8的特性是不是与众不同。 (num)); } } 新特性 JDK1.8新增了非常多的特性,本专题主要讨论以下几个: Lambda表达式:Lambda允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
Switch 的三个方面,参考: JEP 361 支持箭头表达式 支持 yied 返回值 支持 Java Record 箭头表达式,新的 case 标签 Switch 新的语法,case label 表达式|throw 语句|block case label_1, label_2, ..., label_n -> expression;|throw-statement;|block step1:新的 memo = "";//表示计算结果 switch (week){ case 1 -> memo = "星期日,休息"; case 2,3,4,5,6 返回值 yeild 让 switch 作为表达式,能够返回值 语法 变量 = switch(value) { case v1: yield 结果值; case v2: yield 结果值;case v3, ->{ System.out.println("week=2,3,4,5,6 的 表达式部分"); yield "工作日"; } case 7 -> "
上一篇文章 :【JDK8 新特性2】JDK 8 接口默认方法/静态方法_一切总会归于平淡的博客-CSDN博客 目录 1、Supplier接口 2、Consumer接口 3、Function接口 4、Predicate Consumer接口 3. Function接口 4. 使用Lambda判断一个人名如果超过3个字就认为是很长的名字 对length方法的参数T进行判断,返回boolean类型的结果。 用于条件判断的场景: 条件判断的标准是传入的Lambda表达式逻辑,只要名称长度大于3则认为很长。 4.1 默认方法:and 既然是条件判断,就会存在与、或、非三种常见的逻辑关系。 默认方法 negate 的JDK源代码为: 代码演示:
JDK 1.8 新特新 一、函数式接口 1. ; //Lambda 不会在此时就将字符串拼接好 method2(5,()-> s1 + s2 + s3); } } 3. 个人理解 * 使用方法的引用起始其实是将函数式接口的抽象方法用引用方法替换 * 以上述代码为例 将 show() 方法替换为 length() 方法; 等同于 s.length(); ---- JDK 9 及以上特性暂不说明
类型推断例如: ArrayList<String> list = new ArrayList<>(); //类型推断 int[] arr = {1,2,3}; //类型推断 @Test public void @Test public void test3() { Comparator<Integer> comparator1 = new Comparator<Integer>() { 相反,他们会返回一个持有结果的新Stream。 Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。 3、终止操作(终端操作) 一旦执行终止操作, 就执行中间操作链,并产生结果。之后,不会再被使用。 如下图所示 ? 参考资料 https://codeyee.com/archives/java-jdk8.html https://www.bilibili.com/video/BV1Kb411W75N ---- 版权属于
作者:iwen-J | 链接:https://my.oschina.net/zhuqingbo0501/blog/1784693 JDK各个版本的新特性 以下介绍一下JDK1.5版本到JDK1.7版本的特性及 JDK1.8主要部分特性。 JDK1.5新特性 1:自动装箱与拆箱: 自动装箱:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。 JDK 1.6新特性 有关JDK1.6的新特性reamerit的博客文章已经说的很详细了。 {} 关于Java 8的新特性就写到这了,肯定还有更多的特性等待发掘。
包 C++ 14语言特性 预览语言新特性 总结 简介 在2021年3月16日,JDK的迎来了它的一个新版本JDK16,虽然JDK16不是LTS版本,但是作为下一个LTS版本JDK17的先行版本,JDK16 所以一起来看看,JDK16到底为我们提供了些什么新的特性。 JDK16的新特性 总的来说,JDK16有下面的一些新特性: 一些在JDK14中引入的新特性,最终在JDK16中确定了。 提供了 C++ 14语言特性 其他的一些预览版本的新特性 下面图是JDK从8开始到16的新特性个数: 可以看到JDK8和JDK9是最多的,后面基本上变动比较少。 预览语言新特性 在JDK16中还加入了几个预览的语言新特性.这里主要讲一下Vector API和Sealed Classes. 总结 以上就是JDK16给我们带来的新特性,总体而言是很有用的,大家觉得呢?
简介 在2021年3月16日,JDK的迎来了它的一个新版本JDK16,虽然JDK16不是LTS版本,但是作为下一个LTS版本JDK17的先行版本,JDK16为我们带来了17个方面的提升,包括了新的语言特性 所以一起来看看,JDK16到底为我们提供了些什么新的特性。 JDK16的新特性 总的来说,JDK16有下面的一些新特性: 一些在JDK14中引入的新特性,最终在JDK16中确定了。 提供了 C++ 14语言特性 其他的一些预览版本的新特性 下面图是JDK从8开始到16的新特性个数: 可以看到JDK8和JDK9是最多的,后面基本上变动比较少。 预览语言新特性 在JDK16中还加入了几个预览的语言新特性.这里主要讲一下Vector API和Sealed Classes. 总结 以上就是JDK16给我们带来的新特性,总体而言是很有用的,大家觉得呢?