Java 版本特性
1.8
一. 函數(shù)式接口
- 也稱為功能性接口,是有且僅有一個抽象方法,但是可以有多個非抽象方法的接口
- java 8 提供 @FunctionalInterface 注解來標(biāo)識函數(shù)式接口
- Lamda 表達(dá)式需要一個函數(shù)式接口來盛接
二. Lamda 表達(dá)式
- 語法
舉幾個例子
// 不需要參數(shù),返回值為 5 () -> 5// 接收一個參數(shù)(數(shù)字類型),返回其2倍的值 x -> 2 * x// 接受2個參數(shù)(數(shù)字),并返回他們的差值 (x, y) -> x – y// 接收2個int型整數(shù),返回他們的和 (int x, int y) -> x + y// 接受一個 string 對象,并在控制臺打印,不返回任何值(看起來像是返回void) (String s) -> System.out.print(s) /*Runnable就是一個函數(shù)式接口:他只有一個方法run()方法。1、因為run()方法沒有參數(shù),所以 ->前面的()中不需要聲明形參2、run返回的是void,所以不需要return。3、->后面寫的代碼其實就是定義在run方法內(nèi)的代碼。因為此處代碼只有一行,所以{}也可以省略。如果此處多與一行,則無法省略。*/ Runnable runnable = () -> System.out.println("這個是用拉姆Lambda的線程"); new Thread(runnable).start();// 等價于Runnable runnable = new Runnable() {@Overridepublic void run() {System.out.println("這個是用內(nèi)部類實現(xiàn)的線程");} }; new Thread(runnable).start();注:
三. 方法引用
- 語法
四. 默認(rèn)方法
- 語法
五. Stream 流
- 概念
中間方法和終端方法:
中間方法永遠(yuǎn)返回的是 Stream(Pipelining),終點操作才能收集流產(chǎn)生的最終結(jié)果
懶運算只有碰到終端方法才會執(zhí)行
舉個栗子:
List<User> users = new ArrayList<User>(); users.add(new User(20, "張三")); users.add(new User(22, "李四")); users.add(new User(10, "王五"));Stream<User> stream = users.stream(); //返回流中元素的個數(shù)。 long count = stream.filter((User user) -> user.getAge() >= 20).map((User user) -> {return "50";}).count(); System.out.println(count);其他方法 API 參考,傳送門
六. Optional 類
- 特性
舉個栗子:
public static void main(String args[]) {Java8Tester java8Tester = new Java8Tester();Integer value1 = null;Integer value2 = new Integer(10);// Optional.ofNullable - 允許傳遞為 null 參數(shù)Optional<Integer> a = Optional.ofNullable(value1);// Optional.of - 如果傳遞的參數(shù)是 null,拋出異常 NullPointerExceptionOptional<Integer> b = Optional.of(value2);System.out.println(java8Tester.sum(a, b)); }public Integer sum(Optional<Integer> a, Optional<Integer> b) {// Optional.isPresent - 判斷值是否存在System.out.println("第一個參數(shù)值存在: " + a.isPresent());System.out.println("第二個參數(shù)值存在: " + b.isPresent());// Optional.orElse - 如果值存在,返回它,否則返回默認(rèn)值Integer value1 = a.orElse(new Integer(0));//Optional.get - 獲取值,值需要存在Integer value2 = b.get();return value1 + value2; } 輸出結(jié)果為:第一個參數(shù)值存在:false 第二個參數(shù)值存在:true 10七. 日期時間 API
- 舉個栗子:
八. 其他特性
- Nashorn JavaScript
Nashorn 一個 javascript 引擎。 - Base64
Java8 中,Base64 編碼已經(jīng)成為 Java 類庫的標(biāo)準(zhǔn)。
轉(zhuǎn)載注明出處:www.meidanlong.com 😃
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
- 上一篇: 三年定期存款利率 三年定期利率是多少
- 下一篇: 为什么lamda不能修改外部引用的变量?