java 13_Java 13新特性

switch表达式

switch表达式是Java 12开始就提供的预览特性,到了Java 13仍然没有被转正。此特性可以把switch的执行结果组合到复合表达式中进行运算。

import java.time.Year;

public class SwitchExpressionsDemo {

public static void main(String[] args) {

int year = 2012;

int month = 2;

// 把某月的天数与24和60相乘,得到此月份的分钟数

int minutes = 24 * switch (month) {

case 1, 3, 5, 7, 8, 10, 12 -> 31;

case 4, 6, 9, 11 -> 30;

case 2 -> Year.isLeap(year) ? 29 : 28;

default -> throw new IllegalArgumentException("月份应在1~12区间内取值");

} * 60;

System.out.printf("%d年%d月有%d分钟", year, month, minutes);

}

}

使用以下命令进行编译:

D:\>javac --enable-preview -source 13 -encoding utf-8 .\SwitchExpressionsDemo.java

注: .\SwitchExpressionsDemo.java 使用预览语言功能。

注: 有关详细信息,请使用 -Xlint:preview 重新编译。

使用以下命令执行程序:

D:\>java --enable-preview SwitchExpressionsDemo

2012年2月有41760分钟

文本块(多行字符串)

从Java 13开始支持文本块(多行字符串),可以替代从前丑陋的多行字符串拼接。此特性目前也是预览特性。

public class MultiLinesStringDemo {

public static void main(String[] args) {

// 使用"""..."""可以声明一个文本块

String multiLinesString = """

学海孤帆远

书山崎路长

玉颜千钟粟

长留万古芳""";

// 直接在控制台输出文本块

System.out.println(multiLinesString);

System.out.println("----------- 分割线 -----------");

// 使用String类的lines()方法得到一个Stream对象,处理并输出其中的每个元素

// Stream中的元素由文本块中的每一行子串构成

multiLinesString.lines().map(s -> s + "!!!!!").forEach(System.out::println);

}

}

使用以下命令进行编译:

D:\>javac --enable-preview -source 13 -encoding utf-8 .\MultiLinesStringDemo.java

注: .\MultiLinesStringDemo.java 使用预览语言功能。

注: 有关详细信息,请使用 -Xlint:preview 重新编译。

使用以下命令执行程序:

D:\>java --enable-preview MultiLinesStringDemo

学海孤帆远

书山崎路长

玉颜千钟粟

长留万古芳

----------- 分割线 -----------

学海孤帆远!!!!!

书山崎路长!!!!!

玉颜千钟粟!!!!!

长留万古芳!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值