一、新特性: Records
從Java16開始,有一種全新的類型叫做records,所謂records,就是為了方便的表示數據類型,不需要寫繁瑣的getter setter方法
public record Person(String name, int age) {}
//使用
Person p = new Person("Tom", 18);
System.out.println(p.name()); //Tom
從上面的代碼我們可以看到,使用record將類定義簡化了很多,避免了繁瑣的getter setter的定義。
二、新增弱引用類型: WeakHandler
弱引用類型是一種在Java中用於更加智能地管理內存的方法。在Java16中,我們可以使用弱引用類型來避免內存泄漏問題。Java16中新增了一種弱引用類型——WeakHandler,他可以對Handler的對象進行弱引用,使得Handler在沒有對象引用時可以很容易的被釋放。
import java.util.WeakHashMap;
public class WeakHandlerDemo {
public static void main(String[] args) {
WeakHashMap weakMap = new WeakHashMap();
Handler handler = new Handler();
weakMap.put(handler, "test");
handler = null;
System.gc();
System.out.println(weakMap.get(handler));
}
}
class Handler {}
在Java16中, WeakReference和WeakHashMap一起工作,以便我們可以使用弱引用模式來回收未使用的對象。
三、新增switch表達式模式
Java16新增加了一個非常實用的功能,即對switch語句進行升級,可以使用表達式模式匹配:
String color = "red";
int code = switch (color) {
case "red" -> 1;
case "blue" -> 2;
case "green" -> 3;
default -> -1;
};
System.out.println(code);
通過switch表達式模式可以更加方便快捷地處理一些情況
四、多行的文本塊
Java16還支持文本塊, 使得多行的字符串表示更加的簡潔美觀.
String jsonString = """{
"person": {
"name": "Alex",
"age": 18,
"gender": "male"
},
"hobby": ["reading", "running", "coding"]
}""";
使用文本塊, 將上面的string, 內容更加具有可讀性
五、新增弄個功能可數設為null
在java 16版本中,對非要為null的類進行了優化,即可以將他們設為null,這樣在使用的時候就不需要再額外判斷null值而浪費額外的時間,提高了軟件的運行效率
class Person {
private String name;
public Person() {}
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Java16Demo {
public static void main(String[] args) {
Person person = new Person("Tom");
String name = person.getName();
System.out.println(name);
person.setName(null);
name = person.getName();
System.out.println(name);
}
}
上面的代碼中, 我們定義了 Person 類, 並在 main() 方法中定義 person 實例。然後,我們使用可空參數將 name 參數設置為空值,最後使用 getName() 方法獲取 name 屬性的值。因為 name 已經設置為空值,沒有任何輸出
原創文章,作者:AUMR,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/132156.html
微信掃一掃
支付寶掃一掃