JDK11新特性學習(一)
// JDK9 --> JDK11(LTS)
區域性變數型別推斷
JDK7開始支援的型別推斷:(由左邊推到右邊)
List<String> list = new ArrayList<>();
JDK11的型別推斷:(由右邊推到左邊)
var a = "abc";
// 等價於
String a = "abc";
var不是一個關鍵字,所以無法寫 var n; ,類的屬性無法使用var。
-
設定的目的在於減少程式碼量,節約了編碼時間,屬於語法改進。 idea程式碼重構表示不服~
-
var還可以用在lambda表示式中,用來與註解結合使用(java中註解只能寫在型別前面)
// 這樣就可以定義一個被廢棄的消費者介面
Consumer<String> consumer = (@Deprecated var t) -> System.out.println(t.toUpperCase());
一些增強的API
建立物件
// list1、list2 不可以新增元素
List<String> list1 = Arrays.asList("1", "2","3");
List<String> list2 = List.of("1", "2","3");
Set<Integer> set = Set.of(100, 8, 8);
- asList建立的是Arrays這個類的靜態內部類ArrayList,這個內部類沒有add方法,使用的是繼承自AbstractList的add方法,這個方法直接丟擲異常
- of建立了ImmutableCollections類的ListN,沒有add方法,同樣是建立的只讀集合
- Set中的of不是新增不了8,而是直接丟擲異常
總結:of方法通常作為建立物件使用。比如Stream.of() LocalTime.of() …
字串處理
String str = "\t \r\n";
str.isBlank(); // 判斷字串是否為空白 結果為true
str.strip().length(); // 去除字串首尾的空白 結果為0
str.stripTrailing(); // 去除尾部空白
str.stripLeading(); // 去除首部空白
str.repeat(3); // 重複列印三次字串
str.lines().count(); // 字串切割後變成流,再統計字串行數
- trim()是去除字串首尾的空白。本質是去除碼值≤32的空白字元,漢語等語言的空格沒辦法去除!!
- " \t abc \n ".trim().length() 結果是6(字串裡包含了一個全形的空格)
檔案流
InputStream有了個transferTo方法,可以直接將資料傳輸到OutputStream
我們在進行原始資料複製的時候不用再考慮中間的過程
// 將file1拷貝到file2
var c1 = this.getClass().getClassLoader();
var inputStream = c1.getResourceAsStream("./file1");
try(var outputStream = new OutputStream("./file2")) {
inputStream.transferTo(outputStream); // 輸入流的資料直接複製到輸出流
}
inputStream.close();
相關文章
- JDK11新特性學習(二)JDK
- JDK11新特性詳解JDK
- 一起學習React18 新特性React
- JDK 1.8 新特性學習(Stream)JDK
- Java1.8新特性學習Java
- [Java學習筆記]JDK1.8新特性學習(一)Lambda表示式Java筆記JDK
- Automatic Reference Counting(ARC)特性學習(iOS5新特性學習之五)iOS
- C++ 11 新特性 nullptr 學習C++Null
- JDK8 新特性學習筆記JDK筆記
- jdk-1.8新特性學習筆記JDK筆記
- JDK8新特性學習總結JDK
- 推薦一個學習php8的新特性的文件PHP
- 學習筆記~1.4 HTML5新特性筆記HTML
- Java9 新特性彙總——基於 JDK11 程式碼彙總。。。更新中JavaJDK
- 2019 年的 JavaScript 新特性學習指南 | 掘金年度徵文JavaScript
- JDK 新特性學習筆記之模組系統JDK筆記
- OceanBase學習之路11|體驗 DDL 新特性(Oracle 模式)Oracle模式
- OceanBase學習之路12|體驗 DDL 新特性(MySQL 模式)MySql模式
- 學習 iOS14 新特性,教你如何建立一個優秀的 App ClipiOSAPP
- ABAP 7.55 新特性 (一)
- 5個一定要學會的JavaScript新特性JavaScript
- Solidity初學-0.8新特性Solid
- Java 基礎學習系列一 —— Java 主要特性Java
- 學習七、ES2016與ES2017的新特性
- C++11新特性(一):語言特性C++
- 通過示例來學習ES2016, 2017, 2018的新特性
- Python學習之高階特性Python
- 深圳Java培訓學習:Java8.0新特性之Lambda表示式Java
- cocos2D-x初探學習筆記(31)2.1新特性CCPhysicsSprite筆記CSS
- MySQL 學習筆記(一)MySQL 事務的ACID特性MySql筆記
- 新一輪的組隊學習
- angular 新語法糖學習一Angular
- 【RcoketMQ】RcoketMQ 5.0新特性(一)- ProxyMQ
- 學習Rust泛型與特性Rust泛型
- C#特性學習筆記C#筆記
- 新特性
- Kubernetes v1.27 新特性一覽
- Laravel 8 的一些新特性Laravel