记录一些JDK的新特性~持续更新
1、record快速定义类
@Test
public void testRecord() {
/**
* JDK16新特性
*
* @param start
* @param end
*/
record qiu(int start, int end) {
int sum() {
return qiu.this.start + qiu.this.end;
}
}
qiu q1 = new qiu(1, 2);
System.out.println("q1 = " + q1);
qiu q2 = new qiu(3, 4);
System.out.println("q2 = " + q2);
System.out.println(q1.equals(q2));
// 调用方法
System.out.println("q1.sum() = " + q1.sum());
System.out.println("q2.sum() = " + q2.sum());
}
2、字符串的新方法
/**
* isBlank():如果字符串为空或字符串仅包含空格(包括制表符),则返回 true。注意与isEmpty() 不同,isEmpty()仅在长度为 0 时返回 true。
* lines():将字符串拆分为字符串流,每个字符串包含一行。
* strip() : 分别从开头和结尾;
* stripLeading()/stripTrailing()仅开始和仅结束删除空格。
* repeat(int times):返回一个字符串,该字符串采用原始字符串并按指定的次数重复该字符串。
* readString():允许从文件路径直接读取到字符串。
* writeString(Path path):将字符串直接写入指定路径处的文件。
* indent(int level):缩进字符串的指定量。负值只会影响前导空格。
* transform(Function f):将给定的 lambda 应用于字符串。
*/
@SneakyThrows
@Test
public void testNewStringMethod() {
String str1 = "";
System.out.println(str1.isBlank()); // true
System.out.println(str1.isEmpty()); // true
str1 = " ";
System.out.println(str1.isBlank()); // true
System.out.println(str1.isEmpty()); // false
str1 = "\r";
System.out.println(str1.isBlank()); // true
System.out.println(str1.isEmpty()); // false
str1 = "\r\n";
System.out.println(str1.isBlank()); // true
System.out.println(str1.isEmpty()); // false
System.out.println("============================================================");
String str2 = "hello qiu \r\n qiu 我的最爱 JDK17 \n\r!\r";
Stream<String> stream = str2.lines();
stream.forEach(System.out::println);
System.out.println("============================================================");
String strip = str2.strip();
System.out.println("strip = " + strip);
System.out.println("str2.stripTrailing() = " + str2.stripTrailing());
System.out.println("str2.stripIndent() = " + str2.stripIndent());
System.out.println("str2.stripLeading() = " + str2.stripLeading());
System.out.println("============================================================");
String str3 = "qiu";
String repeat = str3.repeat(3);
System.out.println("repeat = " + repeat);
System.out.println("============================================================");
String path = "F:\\a.txt";
Path of = Path.of(path);
String string = Files.readString(of);
System.out.println("readString = " + string);
List<String> asList = Arrays.asList("1", "2", "3", "4", "5");
// Files.write(Paths.get("./test"),list, StandardOpenOption.APPEND);
Files.write(Paths.get("F:\\a.txt"), asList, StandardCharsets.UTF_8, StandardOpenOption.APPEND);
Path writeString = Files.writeString(of, "writeString", StandardOpenOption.APPEND);
System.out.println("writeString = " + writeString);
System.out.println("============================================================");
String path3 = "F:\\a.txt";
System.out.println(path3.indent(2));
}
3、switch优雅的写法
// 以前的写法
String result = "";
int caseNum = 4;
switch (caseNum){
case 1 :
result = "zs";
break;
case 2 :
result = "ls";
break;
case 3 :
result = "ww";
break;
default:
result = "qiuqiu";
}
System.out.println("result = " + result);
// 现在的写法
result = switch (caseNum) {
case 1 -> "张三";
case 2 -> "李四";
case 3 -> "王五";
default -> "秋秋";
};
System.out.println("result = " + result);
记录一些JDK的新特性~持续更新的更多相关文章
- php新特性--持续更新
命名空间 在其他语言中不算新鲜事,但php是5.3.0中引入,具体定义就不复述了,其主要作用是 封装和组织相关php类 .命名空间被引入之前php主要是通过Zend方式组织代码,这种方式带来的问题是类 ...
- Java Stream 流(JDK 8 新特性)
什么是 Steam Java 8 中新增了 Stream(流)来简化集合类的使用,Stream 本质上是个接口,接口中定义了很多对 Stream 对象的操作. 我们知道,Java 中 List 和 S ...
- Java lambda 表达式详解(JDK 8 新特性)
什么是 lambda 表达式 lambda 表达式(拉姆达表达式)是 JAVA 8 中提供的一种新的特性,它使 Java 也能进行简单的"函数式编程". lambda 表达式的本质 ...
- JDK 8 新特性
JDK 8, Oracle's implementation of Java SE 8. JDK 8 是 Oracle 对 Java SE 8 规范的实现. 本文分析 JDK 8 引入的新特性. 官方 ...
- JDK的新特性
JDK5新特性 a,自动拆装箱 b,泛型 c,可变参数 d,静态导入 e,增强for循环 f,互斥锁 g,枚举 JDK7新特性 * A:二进制字面量 * B:数字字面量可以出现下划线 * C:swit ...
- Java Development Kit(JDK) 8 新特性(简述)
一.接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法. 示例如下: interface Formula { calcul ...
- Kali Liunx 2.0震撼来袭(附下载地址、新特性和更新日志)
Kali 2.0昨天已经在BlackHat 2015 USA上正式发布了.无论是粉丝们还是Kali官方都对这个2.0版本抱有极大的期待和热情.这是第一个基于Debian Jessie的Kali版本,此 ...
- JDK 8 新特性之函数式编程 → Stream API
开心一刻 今天和朋友们去K歌,看着这群年轻人一个个唱的贼嗨,不禁感慨道:年轻真好啊! 想到自己年轻的时候,那也是拿着麦克风不放的人 现在的我没那激情了,只喜欢坐在角落里,默默的听着他们唱,就连旁边的妹 ...
- Hadoop2.0新特性-持续追加【干货】
1.NAME NODE HA 2.NAME NODE Federation 3.HDFS 快照(目录快照) 4.HDFS 缓存 5.HDFS ACL 6.异构层级存储结构 -------------- ...
- JDK 9 & JDK 10 新特性
JDK 9 新增了不少特性,官方文档:https://docs.oracle.com/javase/9/whatsnew/toc.htm#JSNEW-GUID-527735CF-44E1-4144-9 ...
随机推荐
- Socket.io入门
Socket.io入门 根据官方文档socket.io使用必须客户端根服务端一致,socket.io不兼容webSocket或者其他模块,因为socket.io在连接时做了自定义处理, 所以不同的长连 ...
- QA|4个数据打开了4个页面,怎么实现只打开一个页面?单例模式|网页计算器自动化测试实战
如下图,代码中4个数据,产生了4个页面,怎么实现只打开一个页面?可使用单例模式 查询得知 单例模式实现有5种方法,参照链接下: https://blog.csdn.net/SixStar_FL/art ...
- QA|linux指令awk '{print $(NF-1)}'为啥用单引号而不是双引号?|linux
linux指令awk '{print $(NF-1)}'为啥用单引号而不是双引号? 我的理解: 因为单引号不对会内容进行转义,而双引号会,举个栗子 1 a=1 2 echo "$a" ...
- MySQL数据库触发器讲解 [创建/删除/查询/select into]
刚学习实例完mysql触发器, 前来分享学习经验. 菜鸟装逼, 老鸟勿喷 先来认识一下有关触发器的一些关键词. 在使用触发器时, 这些关键词将被用到, 请记下它们的模样和用途(意思) cre ...
- 【爬虫实战】用python爬豆瓣电影《热烈》短评
目录 一.爬虫对象-豆瓣电影短评 二.爬取结果 三.爬虫代码讲解 三.演示视频 四.获取完整源码 一.爬虫对象-豆瓣电影短评 您好!我是@马哥python说,一名10年程序猿. 今天分享一期爬虫案例, ...
- C# 使用Windows身份验证连接Sql Server
C# 使用Windows身份验证连接Sql Server 使用Windows身份验证连接Sql Server 的字符串为: server=.;database=test_user;Trusted_Co ...
- DHCP是什么
DHCP 1. DHCP是什么 协议,一种应用层的网络协议,他可以动态地分配网络中的IP地址和其他网络配置的参数以及网络设备,通俗一点讲,每台设备的IP地址,子网掩码,网关等网络参数信息都是由他来完成 ...
- 【Python进阶-PyQt5】00搭建PyQt5环境
1.创建独立开发虚拟环境 1.1虚拟环境简介 我们编写的程序,有时用到的Python库是不一样的,比如说开发桌面应用程序我们主要用到PyQt5相关的Python库.开发Web应用程序我们主要用到Dja ...
- TOP GP 把已经编译的per反编回对应版本的4fd(画面档)
由于GP5.1,5.2,5.3的genero对应版本画面档开发互不兼容,下面提供各版本之间互转的操作方法: xshell切换到要反编译的per档目录,执行以下命令,就会在同目录下生成对应4fd档资料 ...
- Arduino Uno Rev3
Overview Arduino Uno is a microcontroller board based on the ATmega328P (datasheet). It has 14 digit ...