日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 新功能_Java 14的新功能

發布時間:2023/12/3 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 新功能_Java 14的新功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java 新功能

2020年3月17日,Oracle發布了名為Java 14的Java新版本,其中包括許多新功能,工具,安全性,調試和更新的文檔方面的改進。 但是,Oracle還向您提供Java的較舊版本,因為它具有向后兼容性,因此您以前的代碼仍可以在較舊的版本上運行,并且Java 14的語法與Java 8或9并不完全不同,這只是新版本對前一個進行了一些改進。

盡管許多開發人員會花很長時間來更新其Java SE或JDK,但始終建議您及時更新您的工具。 但是,新的更新不會為初學者帶來太多的事情,但是更新始終會對大型項目產生影響,大型項目包括具有數千行代碼的太多Java文件。

1.下載Java 14

您可以訪問Java的官方網站下載Java JDK 14,也可以單擊此鏈接; 這也將帶您到下載頁面。

您也可以下載任何Java IDE來編寫新版本Java的代碼。 所有流行的更新Java IDE(例如IntelliJ IDE和Eclipse)都支持Java 14。

2. Java 14的新增功能?

Java 14文檔正式解決了超過15種新的增強或更改,其中包括Java語言支持和JDK的最新API。

2.1開關表達式(JEP 361)

但是,經典的C ++或類似C的Switch語句已經在Java中使用,帶有一些新功能和選項的新switch表達式在Java 12和13中作為預覽引入,但是現在我們可以說它是Java 14中的標準。

讓我們看一個例子,我們如何在Java 12之前使用Switch語句

tags.switch (day) {case 1:System.out.println("Let's meet!");break;case 2:break;case 3:System.out.println("Let's meet!"); break;case 4:break;case 5:System.out.println("Let's meet!");break;case 6: break;case 7:System.out.println("It's Sunday we cannot meet today");break;}

Old Switch語句的這種語法存在以下問題:

  • 在這里,對于Case 1, Case 3,和Case 5,我們具有相同的行為Case 5,但是我們必須為每個case定義一個特定的case ,這意味著Java switch語句無法提供一種緊湊的方式來編寫類似的行為。
  • 對于每個switch case語句,我們必須放置break語句; 如果我們不這樣做,那么代碼將失敗。

2.2 Java 14開關表達式箭頭運算符

在Java 14中,我們為Switch語句提供了一種新的語法,稱為Switch Expression,在這里,我們獲得了一個新的運算符Arrow -> ,它有助于消除break語句,并為switch Expression提供了簡潔明了的外觀。

Arrow運算符的語法:

case identifier -> statement;

要么

case identifier -> {// statement block ;}

Java 14的開關表達式(箭頭運算符)

讓我們用新的Java 14 Switch Expression重寫上面的Switch語句:

switch (day) {case 1, 3, 5 -> System.out.println("Let's meet!");case 2, 4, 6 -> {// Do nothing}case 7 -> System.out.println("It’s Sunday we cannot meet today");default -> "Not valid";}

在這里您可以看到,借助Java 14箭頭運算符,我們消除了break語句,并且在此處使用單行,針對不同情況傳遞了類似的行為。

2.3 Java 14開關表達式yield運算符

在Java 14中,switch語句具有一個稱為yield的關鍵字,該關鍵字用作case語句表達式的return關鍵字,而switch語句的此功能使其成為Java 14中的switch表達式:

產生語法:

case -> {yield value;}

Java 14的開關表達式(yield語句):

String message = switch (day) {case 1, 3, 5 -> "Let's meet!";case 2, 4, 6 -> {yield "No meeting today";}case 7 -> {yield "It's Sunday we cannot meet today"; }default -> "Not valid"; };

在這里, switch語句將產生一個值,并且該值將存儲在message. 我們應該始終覆蓋switch語句的可能值,為此,switch表達式應始終具有覆蓋非法情況的default語句。

2.4文字區塊(JEP,368):

它是Java 14中的一項新功能。 但是,它的預覽已經在Java 13中引入。在Java的舊版本中,當我們有一個長字符串,并且想要在字符串之間放置換行符時,我們必須使用“ \n ”換行符轉義,并且寫一個長字符串也不好看。 Java 14提供了另一種在緊湊型內核的多行中編寫字符串的方法。

帶有字符串的Java舊版本:

String old_java = " This is first line\n" + "This is second line" + "and this is third line\n";

Java 14文本塊:

要在Java中編寫長的多行字符串,我們使用Text塊,這里的字符串以3個雙反引號""" """駐留。

例:

String new_java = """This is the first lineThis is Second Lineand this is the third line""";

在這里,您在字符之間輸入的每個空格和換行符也將顯示在輸出中。

2.5例如Java 14模式匹配(JEP 305)

Java的較早版本中已經存在instanceof語句,但是Java 14提供了一種技術,我們可以使用單行而不是多行將字符串對象類型轉換為另一個字符串變量。

使用instanceof進行類型轉換的Java舊版本:

Object object_string = "It is a string, but is treated as an object...";if (object_string instanceof String) {String stringObject = (String) object_string;System.out.println(stringObject.length()); }

Java 14

Object object_string = "It is a string but it treated as an object...";if (object_string instanceof String stringObject) {System.out.println(stringObject.length()) }

現在,我們無需為類型轉換顯式編寫額外的語句; Java 14中instanceof語句的增強可以在一行內同時鍵入新變量的收斂。

2.6記錄(JEP,359):

在Java 14中,這是一種預覽模式,我們可以期望在Java 15中使用完整的標準格式。假設我們想創建某種方式來表示Student詳細信息,為此,我們可以使用一些數據變量來創建Student類,例如Name, age,和grades.

class Student {public final String name, grades;public final int age; }

但是這里我們不需要getter和setter。 相反,我們將創建一個構造函數。 創建構造函數是一個好習慣,在它的幫助下,我們還可以判斷兩個Student對象是否引用同一個Student。

class Student {public final String name, grades;public final int age;public Student(String name, int age, String grades){this.name = name;this.age = age;this.grades = grades;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return Objects.equal(student.name, name) == 0 &&Objects.equal(student.grades, grades) == 0 &&Integer.compare(age, student.age);}@Overridepublic int hashCode() {return Objects.hash(name, age, grades);}@Overridepublic String toString() {return "Student{" +"name=" + latitude +", age" + longitude +", grades='" + grades + '\'' +'}';}

在上面的代碼中,我們的重點是學生的name, age,和grades,但我們已覆蓋了構造函數,哈希碼,equals和toString之類的方法,但是Java 14提供了可以解析的預覽功能record這種樣板。

record Student(String name, int age, String grades){}

在這里,構造函數,哈希碼,equals和toString將由編譯器生成,您可以節省很多不必要的代碼重寫。

2.7有用的NullPointer異常(JEP 358)

它是Java 14中已添加的一項新功能。Java虛擬機引發一個異常,稱為NullPointerException(NPE),當代碼嘗試取消引用空引用時,會發生此異常,并且該異常是其中之一。 Java中最常見的異常。

obj.sec_obj.val = 10;

例外:

Exception in thread "main" java.lang.NullPointerExceptionat Npe.main(Npe.java:17)

該示例是在較舊版本的Java上編譯的,在這里您可以看到錯誤消息未提供引用為null的任何特定信息,它可以是obj或obj.sec_obj 。

但是Java 14解決了這個問題,并提供了更好的錯誤消息來調試此語句。

tags.obj.sec_obj.val = 10;

輸出:

Exception in thread "main" java.lang.NullPointerException:Cannot read field "val" because "obj.sec_obj" is nullat Npe.main(Npe.java:17)

現在有了新的異常信息,我們可以直接訪問代碼的sec_obj部分并調試問題。

3.結論

這是Java 14的一些重要新功能,如果您是Java開發人員,則可以在軍械庫中添加這些功能,其中一些功能已在Java 14中進行了預覽,并且某些功能已正確實現。 Java開發人員社區仍在進行升級,下一個更新中還有許多其他更改。 除了這些功能之外,Java 14還引入了許多其他新功能。建議您轉到官方文檔。 Java JEP并閱讀所有官方更新。

4.下載源代碼

下載
您可以在此處下載本文的完整源代碼: Java 14功能

翻譯自: https://www.javacodegeeks.com/java-14-new-features.html

java 新功能

總結

以上是生活随笔為你收集整理的java 新功能_Java 14的新功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。