「这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战」
2018年,随着新的发布节奏的采用,Java悄然经历了其发展中最大的变化之一。这个大胆的新计划使Java开发人员每六个月就能得到一个新的功能版本。
这对于保持Java的新鲜感和相关性来说是非常好的,但这也使得它很容易错过功能的引入。这篇文章总结了几个有用的新特性,并对它们进行了概述。
New String Methods
在Java 10和Java 12中,增加了几个有用的新的String方法。除了字符串操作方法外,还引入了两种新的方法来简化文本文件访问。
Java 10中的新字符串方法。
- isBlank()。如果字符串是空的或者字符串只包含白色空间(这包括制表符),则返回真。注意isBlank()与isEmpty()不同,后者只在长度为0时返回真。
- lines()。将一个字符串分割成一个字符串流,每个字符串包含一个行。 行是由/r或/n或/r/n定义的。
- strip(), stripLeading(), stripTrailing()。分别从开头和结尾、仅开头和仅结尾处删除空白处。
- repeat(int times)。返回一个字符串,该字符串采用原始字符串并重复指定的次数。
- readString()。允许从文件路径直接读取字符串。
- writeString(Path路径)。将字符串直接写到指定路径的文件中。
Java 12中新的String方法。
- indent(int level)。将字符串缩进到指定的数量。负值只影响前面的空白处。
- transform(Function f)。将给定的lambda应用于字符串。
import java.io.IOException;
import java.util.stream.Stream;
public class MyClass {
public static void main(String args[]) throws IOException{
String str = "test \ntest2 \n\rtest3 \r";
Stream lines = str.lines();
lines.forEach(System.out::println);
}
}
/*
outputs:
test
test2
test3
*/
复制代码
Path path = Path.of("myFile.txt");
String text = Files.readString(path);
System.out.println(text);
复制代码
Switch Expressions
Java 12引入了switch表达式,允许在语句中内联使用switch。换句话说,switch表达式会返回一个值。Java 12还提供了一个箭头语法,它消除了对显式中断的需要以防止落空。Java 13更进一步,引入了yield关键字,明确表示switch情况下返回什么值。Java 14将新的switch表达式语法作为一项完整的功能。
让我们来看看一些例子。
class Main {
public static void main(String args[]) {
int size = 3;
String message = "";
switch (size){
case 1 :
message = "one";
case 3 :
message = "three";
break;
default :
message = "unknown";
break;
}
System.out.println("The number is " + message);
}
}
复制代码
上面这段代码相当冗长,而且很棘手。事实上,这里面已经有一个错误了。
仔细看,有一个缺失的断点。下面的例子通过使用switch表达式简化了它。
class NewSwitch {
public static void main(String args[]) {
int size = 3;
System.out.println("The number is " +
switch (size) {
case 1 -> "one";
case 3 -> "three";
default -> "unknown";
}
);
}
}
复制代码
在上面这个例子里,你可以看到switch表达式就在System.out.println调用中。这已经是一个很大的可读性胜利了,而且还消除了多余的消息变量。另外,箭头语法通过消除break语句减少了代码的占用。(在不使用箭头语法的时候,会使用yield关键字)。
感谢观看,这是6个Java不容错过的新特性第2篇文章,如果您有兴趣,可以关注一下我,方便查看后续文章,一起学习,共同进步,不胜感激!