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
學海孤帆遠
書山崎路長
玉顏千鍾粟
長留萬古芳
----------- 分割線 -----------
學海孤帆遠!!!!!
書山崎路長!!!!!
玉顏千鍾粟!!!!!
長留萬古芳!!!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM