JDK1.8究竟有哪些新特性呢

作者:xcbeyond
瘋狂源自夢想,技術(shù)成就輝煌!微信公眾號:《程序猿技術(shù)大咖》號主,專注后端開發(fā)多年,擁有豐富的研發(fā)經(jīng)驗,樂于技術(shù)輸出、分享,現(xiàn)階段從事微服務(wù)架構(gòu)項目的研發(fā)工作,涉及架構(gòu)設(shè)計、技術(shù)選型、業(yè)務(wù)研發(fā)等工作。對于Java、微服務(wù)、數(shù)據(jù)庫、Docker有深入了解,并有大量的調(diào)優(yōu)經(jīng)驗。

目前JDK1.8被各大公司、各大項目紛紛使用,作為Java開發(fā)中使用最多的版本,細(xì)心的你,或許早已發(fā)現(xiàn)它與之前版本存在著較大的差異。如果能熟練掌握使用這些差異、新特性,你會發(fā)現(xiàn)另一片天地。今天抽時間整理下,JDK1.8新特性究竟有哪些?并以【JDK1.8新特性】專題逐一展開討論、學(xué)習(xí)。

(JDK1.8新特性常常在面試中被問及的頻率很高哦)

JDK1.8概述
JDK1.8,又稱之為Java 8(我習(xí)慣叫它為JDK1.8,后續(xù)統(tǒng)一叫做JDK1.8),是Java語言開發(fā)的一個主要版本。Oracle公司于2014年3月18日發(fā)布,它支持函數(shù)式編程,新的JavaScript引擎,新的日期API,新的Stream API等。

JDK1.8相比1.7之前版本,有以下幾方面的優(yōu)化:

速度更快;
代碼更少(Lambda表達(dá)式);
強大Stream API;
便于并行;
最大化減少空指針異常(OPtional類)。
舉例如下,JDK1.8的特性是不是與眾不同。

package com.xcbeyond.study.jdk8;

import org.junit.Test;
import java.util.Arrays;
import java.util.List;

/**
 * JDK1.8新特性
 * @Auther: xcbeyond
 * @Date: 2019/11/27 0027 23:53
 */
public class Java8Test {

    @Test
    public void java8Example() {
        // 定義一個整型list,對其進(jìn)行遍歷
        Integer[] numArray={1,2,3,4,5,6,7,8};
        List<Integer> numList= Arrays.asList(numArray);

        /**
         * 方式1:常規(guī)foreach
         */
        for (int num : numList) {
            System.out.println(num);
        }

        /**
         * 方式2:JDK1.8 新特性寫法(Lambda表達(dá)式)
         *  代碼量是不是少了很多
         */
        numList.forEach((num) -> System.out.println(num));
    }
}

新特性
JDK1.8新增了非常多的特性,本專題主要討論以下幾個:

Lambda表達(dá)式:Lambda允許把函數(shù)作為一個方法的參數(shù)(函數(shù)作為參數(shù)傳遞到方法中)。
方法引用:方法引用提供了非常有用的語法,可以直接引用已有Java類或?qū)ο螅▽嵗┑姆椒ɑ驑?gòu)造器。與lambda聯(lián)合使用,方法引用可以使語言的構(gòu)造更緊湊簡潔,減少冗余代碼。
默認(rèn)方法:默認(rèn)方法就是一個在接口里面有了一個實現(xiàn)的方法。
新工具:新的編譯工具,如:Nashorn引擎 jjs、 類依賴分析器jdeps。
Stream API:新添加的Stream API(java.util.stream) 把真正的函數(shù)式編程風(fēng)格引入到Java中。
Date Time API:加強對日期與時間的處理。
Optional類:Optional 類已經(jīng)成為 Java 8 類庫的一部分,用來解決空指針異常。
Nashorn,JavaScript引擎:JDK1.8提供了一個新的Nashorn javascript引擎,它允許我們在JVM上運行特定的javascript應(yīng)用。
參考資料:

https://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html
https://www.runoob.com/java/java8-new-features.html