一、新特性: 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-tw/n/132156.html