Java 11是这是 Java 大版本周期变化后的第一个长期支持版本(LTS版本,Long-Term-Support,持续支持到2026年9月),是目前全球使用最多的LTS版本之一。
官方新特性:
- 本地变量类型
- 字符串加强
- 集合加强
- 加强文件读写
本地变量类型
这个新功能是java10为Java增加一些语法糖 - 简化它并改善开发者体验
var str = "Hello Java11";
//等价于 String str = "Hello Java11";
System.out.print(str); // Hello Java11
字符串API增强
Java11新增了一些字符串的处理方法,避免我们在很常见的场景中引入额外的、复杂的API。
isBlank()
用来判断字符串是不是空字符""
或者trim()
之后(" "
)为空字符:
String blankStr = " ";
// true
System.out.println("blankStr.isBlank():"+blankStr.isBlank());
lines()
将一个字符串按照行终止符(换行符\n
或者回车符\r
)进行分割,并将分割为Stream
流:
var str = "A\nB\nC";
Stream<String> lines = str.lines();
lines.forEach(System.out::println);
// a b c
strip()
去除字符串前后的“全角和半角”空白字符
strip()
删除字符串头尾的所有空白符stripLeading()
删除字符串左边 ( 头部 ) 的所有空白符stripTrailing()
删除字符串右边 ( 尾部 ) 的所有空白符
trim()
方法,从下面也看出来了差别,trim()
只能去除半角
空白符。例子:
var str = " Java11 ";
System.out.println("-" + str.strip() + "-");
System.out.println("-" + str.stripLeading() + "-");
System.out.println("-" + str.stripTrailing() + "-");
System.out.println("-" + str.trim() + "-");
str = "Java11\u3000";
System.out.println("str = " + str.length());
System.out.println("trim = " + str.trim().length());
System.out.println("strip = " + str.strip().length());
repeat(n)
方法将字符串重复指定次数,如果传递的是负数,则会抛出异常,如果传递的是 0 ,那么就返回空字符串了
System.out.println("Java11".repeat(3)); // Java11Java11Java11
集合加强
Collection.toArray(IntFunction)
在java.util.Collection接口中添加了一个新的默认方法toArray(IntFunction)。此方法允许将集合的元素传输到新创建的所需运行时类型的数组。
var list = List.of("Java", "Python", "C");
String[] array = list.toArray(String[]::new);
for (String s : array) {
System.out.println("s:"+s);
}
加强文件读写
Java 11中可以更轻松地从文件中读取和写入字符串内容了,我们可以通过Files
工具类提供的新的静态方法readString
和writeString
分别进行读写文件的字符串内容。
String dir= "E://test_test";
// 写入文件
Files.writeString(Path.of("E://test_test//hello.txt"),"hello java 11");
// 读取文件
String fileContent = Files.readString(Path.of("E://test_test//hello.txt"));
System.out.println("fileContent:"+fileContent);