中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Java12有什么新特性

這篇文章主要講解了“Java12有什么新特性”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Java12有什么新特性”吧!

10年的秭歸網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整秭歸建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“秭歸網(wǎng)站設(shè)計”,“秭歸網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

Switch 表達式 (JEP 325)

在 Java 12 中,對 Switch 表達式的寫法進行了改進,雖然是一個語法糖的改進,也讓 Switch 的代碼編寫變得更加優(yōu)雅。先看一下在 Java 12 之前的 Switch 的寫法。

// 通過傳入月份,輸出月份所屬的季節(jié)  public static void switchJava12Before(String day) {      switch (day) {          case "march":          case "april":          case "may":              System.out.println("春天");              break;          case "june":          case "july":          case "august":              System.out.println("夏天");              break;          case "september":          case "october":          case "november":              System.out.println("秋天");              break;          case "december":          case "january":          case "february":              System.out.println("冬天");              break;      }  }

上面的例子中,通過傳入一個月份,輸出這個月份對應(yīng)的季節(jié)。簡單的功能卻寫了大量代碼,而且每個操作都需要一個 break來防止 Case 穿透。

使用預(yù)覽功能

由于 Switch 表達式在 Java 12 中并不是一個正式發(fā)布的功能,還處于預(yù)覽測試階段,所以想要使用 Java 12 去編譯運行就需要打開功能預(yù)覽參數(shù),當然,如果你使用的是 Java 14 以及更高版本,就可以直接跳過這個部分了。

# 編譯時  ./bin/javac --enable-preview -source 12 ./Xxx.java  # 運行時  ./bin/java --enable-preview Xxx

如果某個新特性是預(yù)覽功能,這意味著這個功能有可能在未來的版本中刪除。

Java 12 Switch

由于 Switch 存在的上述問題,所以在 Java 12 中對 Switch 進行了改進,讓其可以使用 case L -> 的方式進行操作,那么在 Java 12 中可以怎么編寫這段代碼呢?

public static void switchJava12(String day) {      switch (day) {          case "march", "april", "may"            -> System.out.println("春天");          case "june", "july", "august"           -> System.out.println("夏天");          case "september", "october", "november" -> System.out.println("秋天");          case "december", "january", "february"  -> System.out.println("冬天");      }  }

通過測試可以得到預(yù)期的輸出結(jié)果。這還不夠,在 Switch 的改進中,還支持了使用 Switch 的返回值進行賦值。

像下面這樣:

String season = switch (day) {      case "march", "april", "may"            -> "春天";      case "june", "july", "august"           -> "春天";      case "september", "october", "november" -> "春天";      case "december", "january", "february"  -> "春天";      default -> {        //throw new RuntimeException("day error")          System.out.println("day error");          break "day error";      }  };  System.out.println("當前季節(jié)是:" + season);

雖然編寫更加簡單了,其實這些只不過是語法糖式的更新,編譯后和之前并沒有太大區(qū)別。

文件對比 Files.mismatch

在 Java 中對于文件的操作已經(jīng)在 Java 7 中進行了一次增強,這次 Java 12 又帶來了文件對比功能。對比兩個文件,如果內(nèi)容一致,會返回 -1 ,如果內(nèi)容不同,會返回不同的字節(jié)開始位置。

// 創(chuàng)建兩個文件  Path pathA = Files.createFile(Paths.get("a.txt"));  Path pathB = Files.createFile(Paths.get("b.txt"));  // 寫入相同內(nèi)容  Files.write(pathA,"abc".getBytes(), StandardOpenOption.WRITE);  Files.write(pathB,"abc".getBytes(), StandardOpenOption.WRITE);  long mismatch = Files.mismatch(pathA, pathB);  System.out.println(mismatch);  // 追加不同內(nèi)容  Files.write(pathA,"123".getBytes(), StandardOpenOption.APPEND);  Files.write(pathB,"321".getBytes(), StandardOpenOption.APPEND);  mismatch = Files.mismatch(pathA, pathB);  System.out.println(mismatch);  // 刪除創(chuàng)建的文件  pathA.toFile().deleteOnExit();  pathB.toFile().deleteOnExit();   // RESULT  // -1  // 3

對比功能的實現(xiàn)可以直接閱讀源碼,還是很簡單的。

Compact Number

簡化的數(shù)字格式可以直接轉(zhuǎn)換數(shù)字顯示格式,比如 1000 -> 1K,1000000 -> 1M 。

System.out.println("Compact Formatting is:");  NumberFormat upvotes = NumberFormat.getCompactNumberInstance(new Locale("en", "US"), Style.SHORT);  System.out.println(upvotes.format(100));  System.out.println(upvotes.format(1000));  System.out.println(upvotes.format(10000));  System.out.println(upvotes.format(100000));  System.out.println(upvotes.format(1000000));  // 設(shè)置小數(shù)位數(shù)  upvotes.setMaximumFractionDigits(1);  System.out.println(upvotes.format(1234));  System.out.println(upvotes.format(123456));  System.out.println(upvotes.format(12345678));

可以得到輸出如下:

100  1K  10K  100K  1M  1.2K  123.5K  12.3M

JVM 相關(guān)更新

Shenandoah 垃圾收集器

Java 12 增加了 Shenandoah 一個低停頓的垃圾收集器,它可以和 Java 應(yīng)用程序中的執(zhí)行線程同時進行,用來收集垃圾進行內(nèi)容回收,這樣就可以讓停頓時間更少。

更多關(guān)于 Shenandoah 垃圾收集器的介紹可以查看文檔:Shenandoah GC 介紹。

ZGC 并發(fā)類卸載

Z 垃圾收集器現(xiàn)在支持類卸載,通過卸載不使用的類來釋放這些類相關(guān)的數(shù)據(jù)結(jié)構(gòu),從而減少應(yīng)用程序的總體占用空間。因為是并發(fā)執(zhí)行,所以不會停止 Java 應(yīng)用程序線程的執(zhí)行,也因此對 GC 的暫停時間影響微乎其微。默認情況下啟用此功能,但可以使用命令行選項禁用-XX:-ClassUnloading。

JVM 常量 API

在包 java.lang.invoke.constant 中定義了一系列的基于值的符號引用,可以用來描述各種可加載常量。可以更容易的對關(guān)鍵類文件和運行時構(gòu)建的名義描述進行建模,特別是對那些從常量池中加載的常量,也讓開發(fā)者可以更簡單標準的處理可加載常量。

默認使用類數(shù)據(jù)共享(CDS)

這已經(jīng)不是 JDK 第一次改進 CDS(Class Data Sharing) 功能了,CDS 可以讓 JVM 在同一臺機器或虛擬機上啟動多個應(yīng)用的速度速度大大增加。原理是在啟動應(yīng)用時共享一些類加載信息,這樣啟動新進程時就可以使用共享的數(shù)據(jù)。在  Java 12 之前此功能需要手動開啟,Java 12 調(diào)整為默認開啟。

微基準套件

Java 12  中添加一套新的基于 JMH 的基本的微基準測試套件。 。

其他更新

1. 支持 Unicode 11

在 Java 11 支持了 Unicode 10 之后, Java 12 支持了 Unicode 11,支持操作更多的表情、符號。  

感謝各位的閱讀,以上就是“Java12有什么新特性”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Java12有什么新特性這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

網(wǎng)站欄目:Java12有什么新特性
本文URL:http://www.rwnh.cn/article40/jipheo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站策劃、App設(shè)計、網(wǎng)站維護、品牌網(wǎng)站設(shè)計、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
紫金县| 修文县| 津市市| 阳城县| 赞皇县| 东方市| 德清县| 扎鲁特旗| 丽水市| 星座| 彭阳县| 澳门| 塘沽区| 辽阳市| 元阳县| 连云港市| 金门县| 政和县| 新源县| 商水县| 思茅市| 九江县| 洛隆县| 临高县| 灵台县| 临颍县| 错那县| 乳源| 固安县| 通渭县| 右玉县| 河北区| 星子县| 五大连池市| 无锡市| 积石山| 罗山县| 子洲县| 通道| 临沧市| 仁布县|