成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

聊聊 Java8 以后各個(gè)版本的新特性

K_B_Z / 1381人閱讀

摘要:于是抽時(shí)間看了看以后各個(gè)版本的特性,做了一個(gè)總結(jié)。年和公開版本發(fā)布,取名為。此后對(duì)應(yīng)版本就是,。發(fā)布,是一個(gè)重大版本更新。在此之后,就是每六個(gè)月發(fā)布一次新版本。以上和參考資料聊了一些關(guān)于的歷史,下面我們看看各個(gè)版本有那些新特性。

這是 ZY 第 11 篇原創(chuàng)技術(shù)文章

某天在網(wǎng)上閑逛,突然看到有篇介紹 Java 11 新特性的文章,頓時(shí)心里一驚,畢竟我對(duì)于 Java 的版本認(rèn)識(shí)還停留在 Java 8 上,而日常使用的語法和 API 還停留在 Java 7 上。于是抽時(shí)間看了看 Java 8 以后各個(gè)版本的特性,做了一個(gè)總結(jié)。

文章概覽

JDK

JDK 全稱 Java Development Kit,是 Java 開發(fā)環(huán)境。我們通常所說的 JDK 指的是 Java SE (Standard Edition) Development Kit。除此之外還有 Java EE(Enterprise Edition)和 Java ME(Micro Edition platforms)。

Java 的發(fā)布周期
版本 發(fā)布時(shí)間 名稱
JDK Beta 1995 WebRunner
JDK 1.0 1996.1 Oak
JDK 1.1 1997.2
J2SE 1.2 1998.12 Playground
J2SE 1.3 2000.5 Kestrel
J2SE 1.4 2002.2 Merlin
J2SE 5.0 2004.9 Tiger
Java SE 6 2006.12 Mustang
Java SE 7 2011.7 Dolphin
Java SE 8 (LTS) 2014.3
Java SE 9 2017.9
Java SE 10 (18.3) 2018.3
Java SE 11 (18.9 LTS) 2018.9
Java SE 12 (19.3) 2019.3
Java SE 13 (19.9) 2019.9

下面我們看一些 Java 發(fā)展過程中重要的節(jié)點(diǎn)。
1995 年 alpha 和 beta Java 公開版本發(fā)布,取名為 WebRunner。

1996.1.23 Java 第一個(gè)版本發(fā)布,取名叫 Oak。但是第一個(gè)穩(wěn)定版本是 JDK 1.0.2,被稱做 Java 1。

1998.12.8 發(fā)布了 J2SE 1.2。這個(gè)版本到 J2SE 5.0 更名為 Java 2。其中的 SE 指的是 Standard Edition,為了區(qū)別于 J2EE(Enterprise Edition)和 J2ME(Micro Edition)。

2000.5 發(fā)布了 J2SE 1.3,其中包含了 HotSpot JVM。而 HotSpot JVM 首次發(fā)布是在 1999.4,名為 J2SE 1.2 JVM。

2004.9.30 發(fā)布了 J2SE 5.0。為什么這個(gè)版本命名和前面幾個(gè)版本不一樣呢?這個(gè)版本原本計(jì)劃以 1.5 命名的,沿用以前的命名方式。但是為了更好的反映這個(gè)版本的成熟度,所以改名為 5.0。
這個(gè)版本以后,有了一個(gè)新的版本控制系統(tǒng),5.0 用來表示產(chǎn)品版本,用來表示穩(wěn)定的 J2SE 版本,而 1.5.0 用來表示開發(fā)者版本,也就是 Java 5.0 = JDK 1.5.0。

2006.12.11,J2SE 改名為 Java SE,版本號(hào)去掉了 .0。此后對(duì)應(yīng)版本就是 Java 6 = JDK 1.6,Java 7 = JDK 1.7。

2011.7.7. 發(fā)布 Java SE 7,是一個(gè)重大版本更新。更新了眾多特性。

2018.3 發(fā)布 Java SE 10。在此之前,Java 基本上是兩年一個(gè)版本,除了 Java SE 7 經(jīng)過了五年,Java SE 8 經(jīng)過了三年。在此之后,就是每六個(gè)月發(fā)布一次新版本。但是不是每個(gè)版本都是 LTS(Long-Term-Support)。按照 Oracle 的計(jì)劃,每三年會(huì)有一個(gè) LTS 版本。最近的 LTS 版本就是 Java SE 11 了。

OpenJDK VS Oracle JDK

OpenJDK 是 在 2007 年由 Sun Corporation(現(xiàn)在的Oracle Corporation) 發(fā)布的。是 Oracle JDK 的開源實(shí)現(xiàn)版本,以 GPL 協(xié)議發(fā)布。在 JDK 7 的時(shí)候,Sub JDK 就是在 Open JDK 7 的基礎(chǔ)上發(fā)布的,只替換了少量的源碼。在 Sun 公司被 Oracle 收購以后,Sun SDK 就被稱為 Oracle JDK。Oracle JDK 是基于 Oracle Binary COde License Agreement 協(xié)議。
兩者的區(qū)別如下:

Oracle JDK 將三年發(fā)布一次穩(wěn)定版本,OpenJDK 每三個(gè)月發(fā)布一次。

Oracle JDK 支持 LTS,OpenJDK 只支持當(dāng)前版本至下一個(gè)版本發(fā)布。

Oracle JDK 采用 Oracle Binary Code License 協(xié)議,OpenJDK 采用 GPL v2 協(xié)議。

Oracle JDK 基于 OpenJDK 構(gòu)建,技術(shù)上基本沒有差異。

Android 和 JDK

說起 Android 和 OpenJDK 的歷史淵源,還是略微復(fù)雜。
簡單來說,Android 最開始使用的 Java 是基于 Apache 協(xié)議發(fā)布的 Harmony,后來由于 Harmony 本身的限制和 Oracle 公司的起訴,從 Android N 以后, Google 開始使用 OpenJDK。
然后我們?cè)偕晕⒄归_聊聊。

JVM 和 TCK

Sun 公司最初開發(fā)了 Java 語言,同時(shí)也開發(fā)了 JVM,并且定義了 JVM 規(guī)范。這個(gè)我們比較清楚,只要基于 JVM 規(guī)范開發(fā)自己的語言,就可以運(yùn)行在 JVM 上。但是依照規(guī)范開發(fā)了語言之后,需要通過 Sun 的 TCK(Technology Compatibility Kit)測(cè)試,之后才能成為官方認(rèn)可的 JVM 語言。

Harmony 和 OpenJDK

基于 JVM 規(guī)范,Apache 開發(fā)了一個(gè)開源免費(fèi)的 Java 實(shí)現(xiàn) Harmony,并且根據(jù) Apache License v2 發(fā)布。但是 Sun 公司并沒有給 Harmony TCK 許可。

在 2009.4.15 Sun 公司發(fā)布了 OpenJDK,基于 GNU GPL 發(fā)布。同時(shí) Sun 公司規(guī)定只有衍生自 OpenJDK 采用的 GPL 協(xié)議的開源實(shí)現(xiàn)才能運(yùn)行 OpenJDK 的 TCK。之后 Oracle 收購 Sun 公司以后接管了 OpenJDK。
由于 Apache 的 Harmony 是 Apache 協(xié)議,與 OpenJDK 的 GPL 協(xié)議不兼容,所以 Harmony 一直沒有得到 TCK 授權(quán)。

Android 最開始是采用了 Harmony 作為自己的 Java 類庫,因?yàn)?Harmony 使用的 Apache 協(xié)議更自由。而由于 Harmony 沒有通過 TCK 認(rèn)證,也為后來 Oracle 起訴 Google 埋下伏筆。

Oracle 和 Google 關(guān)于 JDK 糾紛

后來 Oracle 起訴 Google 主要集中在兩點(diǎn),一是 Oracle 認(rèn)為 Google 代碼中使用了 Java 的 37 個(gè) API,二是 Sun 公司前員工在跳槽后為 Android 項(xiàng)目開發(fā)時(shí),直接復(fù)制了 OpenJDK 中的九行代碼,而 Android 項(xiàng)目并沒有按照 GPL 協(xié)議授權(quán),所以復(fù)制 OpenJDK 代碼是沒有通過 GPL 授權(quán)的。

所以到后來為了解決專利的問題,Android N 以后,Android 開始使用 OpenJDK 替換 Harmony。

以上 Android 和 JDK 參考資料:
https://juejin.im/entry/5abc5...
https://zh.wikipedia.org/zh/A...
https://gudong.name/2019/04/0...

聊了一些關(guān)于 Java 的歷史,下面我們看看各個(gè) Java 版本有那些新特性。這里只列出了對(duì)開發(fā)者影響比較大的一些特性~

Java 8 1. Lambda 和 函數(shù)式接口

Lambda 表達(dá)式相信不用再過多的介紹,終于在 Java 8 引入了,可以極大的減少代碼量,代碼看起來更清爽。
函數(shù)式接口就是有且僅有一個(gè)抽象方法,但是可以有多個(gè)非抽象方法的接口??梢噪[式轉(zhuǎn)化為 Lambda 表達(dá)式。
我們定義一個(gè)函數(shù)式接口如下:

@FunctionalInterface
interface Operation {
    int operation(int a, int b);
}

再定義一個(gè) Class 用來操作 Operation 接口。

class Test {
    private int operate(int a, int b, Operation operation) {
        return operation.operation(a, b);
    }
}

Test test = new Test();

在 Java 8 之前,我們想要實(shí)現(xiàn) Operation 接口并傳給 Test.operate() 方法使用,我們要定義一個(gè)匿名類,實(shí)現(xiàn) Operation 方法。

test.operate(1, 2, new Operation() {
    @Override
    public int operation(int a, int b) {
        return a + b;
    }
});

而使用 Lambda 表達(dá)式,我們就可以這樣寫了:

test.operate(1, 2, (a, b) -> a + b);
2. 方法引用

通過方法引用,可以使用方法的名字來指向一個(gè)方法。使用一對(duì)冒號(hào)來引 "::" 用方法。
還是以上面的例子來看,我們?cè)偬砑訋讉€(gè)方法:

@FunctionalInterface
interface Operation {
    int operation(int a, int b);
}

interface Creater {
    T get();
}

interface TestInt {
    int cp(Test test1, Test test2);
}

class Test {
    public static Test create(Creater creater) {
        return creater.get();
    }

    private int operate(int a, int b, Operation operation) {
        return operation.operation(a, b);
    }

    private static int add(int a, int b) {
        return a + b;
    }

    private int sub(int a, int b) {
        return a - b;
    }

    public int testM(Test test) {
        return 0;
    }

    public void test(TestInt testInt) {
        Test t1 = Test.create(Test::new); 
        Test t2 = Test.create(Test::new);
        testInt.cp(t1, t2);
    }

}

那么對(duì)應(yīng)的方法引用有四種:
構(gòu)造方法引用
使用方式:Class::new

Test test = Test.create(Test::new);

靜態(tài)方法引用
使用方式:Class::staticMethod

test.operate(1, 2, Test::add);

對(duì)象的實(shí)例方法引用
使用方式:instance::method

test.operate(1, 2, test::sub);

類的實(shí)例方法引用
使用方式:Class::method

test.test(Test::testM);

其實(shí)上面三種方法引用都好理解,最后類的實(shí)例方法引用,有兩個(gè)條件:

首先要滿足實(shí)例方法,而不是靜態(tài)方法

Lambda 表達(dá)式的第一個(gè)參數(shù)會(huì)成為調(diào)用實(shí)例方法的對(duì)象

根據(jù)這兩點(diǎn)我們看上面的例子,test 方法接受一個(gè) TestInt 實(shí)例,用 Lambda 表達(dá)式表示就是 (Test t1, Test t2) -> res,而我們調(diào)用 test 方法時(shí)傳入的方法引用是 Test::testM,其參數(shù)也是一個(gè) Test 實(shí)例,最終 test.test(Test::testM) 的調(diào)用效果就是 t1.testM(t2)

3. 接口默認(rèn)方法和靜態(tài)方法

Java 8 新增了接口的默認(rèn)實(shí)現(xiàn),通過 default 關(guān)鍵字表示。同時(shí)也可以提供靜態(tài)默認(rèn)方法。

public interface TestInterface {
    String test();

    // 接口默認(rèn)方法
    default String defaultTest() {
        return "default";
    }

    static String staticTest() {
        return "static";
    }
}
4. 重復(fù)注解

Java 8 支持了重復(fù)注解。在 Java 8 之前想實(shí)現(xiàn)重復(fù)注解,需要用一些方法來繞過限制。比如下面的代碼。

@interface Author {
    String name();
}

@interface Authors {
    Author[] value();
}

@Authors({@Author(name="a"), @Author(name = "b")})
class Article {
}

而在 Java 8 中,可以直接用下面的方式。

@Repeatable(Authors.class)
@interface Author {
    String name();
}

@interface Authors {
    Author[] value();
}

@Author(name = "a")
@Author(name = "b")
class Article {
}

在解析注解的時(shí)候,Java 8 也提供了新的 API。

AnnotatedElement.getAnnotationsByType(Class)
5. 類型注解

Java 8 之前注解只能用在聲明中,在 Java 8 中,注解可以使用在 任何地方。

@Author(name="a")
private Object name = "";
private String author = (@Author(name="a")String) name;
6. 更好的類型推斷

Java 8 對(duì)于類型推斷做了改進(jìn)。
比如在 Java 7 中下面的寫法:

List stringList = new ArrayList<>();
stringList.add("A");
stringList.addAll(Arrays.asList());

在 Java 8 中改進(jìn)后的寫法,可以自動(dòng)做類型推斷。

List stringList = new ArrayList<>();
stringList.add("A");
stringList.addAll(Arrays.asList());
7. Optional

Java 8 中新增了 Optional 類用來解決空指針異常。Optional 是一個(gè)可以保存 null 的容器對(duì)象。通過 isPresent() 方法檢測(cè)值是否存在,通過 get() 方法返回對(duì)象。
除此之外,Optional 還提供了很多其他有用的方法,具體可以查看文檔。下面是一些示例代碼。

// 創(chuàng)建一個(gè) String 類型的容器
Optional str = Optional.of("str");
// 值是否存在
boolean pre = str.isPresent();
// 值如果存在就調(diào)用 println 方法,這里傳入的是 println 的方法引用
str.ifPresent(System.out::println);
// 獲取值
String res = str.get();
// 傳入空值
str = Optional.ofNullable(null);
// 如果值存在,返回值,否則返回傳入的參數(shù)
res = str.orElse("aa");
str = Optional.of("str");
// 如果有值,對(duì)其調(diào)用映射函數(shù)得到返回值,對(duì)返回值進(jìn)行 Optional 包裝并返回
res = str.map(s -> "aa" + s).get();
// 返回一個(gè)帶有映射函數(shù)的 Optional 對(duì)象
res = str.flatMap(s -> Optional.of(s + "bb")).flatMap(s -> Optional.of(s + "cc")).get();
8. Stream

Java 8 中新增的 Stream 類提供了一種新的數(shù)據(jù)處理方式。這種方式將元素集合看做一種流,在管道中傳輸,經(jīng)過一系列處理節(jié)點(diǎn),最終輸出結(jié)果。
關(guān)于 Stream 提供的具體方法,可以參照 API。下面是一些示例代碼。

List list = Arrays.asList("maa", "a", "ab", "c");
list.stream()
        .filter(s -> s.contains("a"))
        .map(s -> s + "aa")
        .sorted()
        .forEach(System.out::println);

System.out.println("####");
list.parallelStream().forEach(System.out::println);

List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);
int res = numbers.stream().map(i -> i + 1).mapToInt(i -> i).summaryStatistics().getMax();
System.out.println(res);
9. 日期時(shí)間 API

Java 8 中新增了日期時(shí)間 API 用來加強(qiáng)對(duì)日期時(shí)間的處理,其中包括了 LocalDate,LocalTime,LocalDateTime,ZonedDateTime 等等,關(guān)于 API 可以參照官方文檔以及這篇博客,寫的很詳細(xì)。下面是示例代碼。

LocalDate now = LocalDate.now();
System.out.println(now);
System.out.println(now.getYear());
System.out.println(now.getMonth());
System.out.println(now.getDayOfMonth());

LocalTime localTime = LocalTime.now();
System.out.println(localTime);
LocalDateTime localDateTime = now.atTime(localTime);
System.out.println(localDateTime);
10. Base64 支持

Java 8 標(biāo)準(zhǔn)庫中提供了對(duì) Base 64 編碼的支持。具體 API 見可參照文檔。下面是示例代碼。

String base64 = Base64.getEncoder().encodeToString("aaa".getBytes());
System.out.println(base64);
byte[] bytes = Base64.getDecoder().decode(base64);
System.out.println(new String(bytes));
11. 并行數(shù)組 ParallelSort

Java 8 中提供了對(duì)數(shù)組的并行操作,包括 parallelSort 等等,具體可參照 API。

Arrays.parallelSort(new int[] {1, 2, 3, 4, 5});
12. 其他新特性

對(duì)并發(fā)的增強(qiáng)

在java.util.concurrent.atomic包中還增加了下面這些類:
DoubleAccumulator
DoubleAdder
LongAccumulator
LongAdder

提供了新的 Nashorn javascript 引擎

提供了 jjs,是一個(gè)給予 Nashorn 的命令行工具,可以用來執(zhí)行 JavaScript 源碼

提供了新的類依賴分析工具 jdeps

JVM 的新特性

JVM內(nèi)存永久區(qū)已經(jīng)被metaspace替換(JEP 122)。JVM參數(shù) -XX:PermSize 和 –XX:MaxPermSize被XX:MetaSpaceSize 和 -XX:MaxMetaspaceSize代替。

可以看到,Java 8 整體上的改進(jìn)是很大的,最重要的是引入 Lambda 表達(dá)式,簡化代碼。

其他一些改進(jìn)可參照 https://www.oracle.com/techne...

Java 9 1. Jigsaw 模塊系統(tǒng)

在 Java 9 以前,打包和依賴都是基于 JAR 包進(jìn)行的。JRE 中包含了 rt.jar,將近 63M,也就是說要運(yùn)行一個(gè)簡單的 Hello World,也需要依賴這么大的 jar 包。在 Java 9 中提出的模塊化系統(tǒng),對(duì)這點(diǎn)進(jìn)行了改善。
關(guān)于模塊化系統(tǒng)具體可以看看這篇文章。

2. JShell REPL

Java 9 提供了交互式解釋器。有了 JShell 以后,Java 終于可以像 Python,Node.js 一樣在 Shell 中運(yùn)行一些代碼并直接得出結(jié)果了。

3. 私有接口方法,接口中使用私有方法

Java 9 中可以在接口中定義私有方法。示例代碼如下:

public interface TestInterface {
    String test();

    // 接口默認(rèn)方法
    default String defaultTest() {
        pmethod();
        return "default";
    }

    private String pmethod() {
        System.out.println("private method in interface");
        return "private";
    }
}
4. 集合不可變實(shí)例工廠方法

在以前,我們想要?jiǎng)?chuàng)建一個(gè)不可變的集合,需要先創(chuàng)建一個(gè)可變集合,然后使用 unmodifiableSet 創(chuàng)建不可變集合。代碼如下:

Set set = new HashSet<>();
set.add("A");
set.add("B");
set.add("C");

set = Collections.unmodifiableSet(set);
System.out.println(set);

Java 9 中提供了新的 API 用來創(chuàng)建不可變集合。

List list = List.of("A", "B", "C");
Set set = Set.of("A", "B", "C");
Map map = Map.of("KA", "VA", "KB", "VB");
5. 改進(jìn) try-with-resources

Java 9 中不需要在 try 中額外定義一個(gè)變量。Java 9 之前需要這樣使用 try-with-resources:

InputStream inputStream = new StringBufferInputStream("a");
try (InputStream in = inputStream) {
    in.read();
} catch (IOException e) {
    e.printStackTrace();
}

在 Java 9 中可以直接使用 inputStream 變量,不需要再額外定義新的變量了。

InputStream inputStream = new StringBufferInputStream("a");
try (inputStream) {
    inputStream.read();
} catch (IOException e) {
    e.printStackTrace();
}
6. 多版本兼容 jar 包

Java 9 中支持在同一個(gè) JAR 中維護(hù)不同版本的 Java 類和資源。

7. 增強(qiáng)了 Stream,Optional,Process API 8. 新增 HTTP2 Client 9. 增強(qiáng) Javadoc,增加了 HTML 5 文檔的輸出,并且增加了搜索功能 10. 增強(qiáng) @Deprecated

對(duì) Deprecated 新增了 since 和 forRemoval 屬性

11. 增強(qiáng)了鉆石操作符 "<>",可以在 匿名內(nèi)部類中使用了。

在 Java 9 之前,內(nèi)部匿名類需要指定泛型類型,如下:

Handler intHandler1 = new Handler(2) {
}

而在 Java 9 中,可以自動(dòng)做類型推導(dǎo),如下:

Handler intHandler1 = new Handler<>(2) {
}
12. 多分辨率圖像 API:定義多分辨率圖像API,開發(fā)者可以很容易的操作和展示不同分辨率的圖像了。 13. 改進(jìn)的 CompletableFuture API

CompletableFuture 類的異步機(jī)制可以在 ProcessHandle.onExit 方法退出時(shí)執(zhí)行操作。

其他一些改進(jìn)可參照 https://docs.oracle.com/javas...

Java 10 1. 新增局部類型推斷 var
var a = "aa";
System.out.println(a);

var 關(guān)鍵字目前只能用于局部變量以及 for 循環(huán)變量聲明中。

2. 刪除工具 javah

從JDK中移除了 javah 工具,使用 javac -h 代替。

3. 統(tǒng)一的垃圾回收接口,改進(jìn)了 GC 和其他內(nèi)務(wù)管理 其他特性

ThreadLocal 握手交互

JDK 10 引入一種在線程上執(zhí)行回調(diào)的新方法,很方便的停止單個(gè)線程而不是停止全部線程或者一個(gè)都不停。

基于Java的實(shí)驗(yàn)性JIT編譯器

Java 10 開啟了 Java JIT編譯器 Graal,用作Linux / x64平臺(tái)上的實(shí)驗(yàn)性JIT編譯器。

提供默認(rèn)的 CA 根證書

將 JDK 生態(tài)整合到單個(gè)倉庫

此JEP的主要目標(biāo)是執(zhí)行一些內(nèi)存管理,并將JDK生態(tài)的眾多存儲(chǔ)庫組合到一個(gè)存儲(chǔ)庫中。

其他一些改進(jìn)可以參照 https://www.oracle.com/techne...

Java 11 1. Lambda 中使用 var
(var x, var y) -> x.process(y)
2. 字符串 API 增強(qiáng)

Java 11 新增了 一系列字符串處理方法,例如:

// 判斷字符串是否為空白
" ".isBlank(); 
" Javastack ".stripTrailing();  // " Javastack"
" Javastack ".stripLeading();   // "Javastack "
3. 標(biāo)準(zhǔn)化 HttpClient API 4. java 直接編譯并運(yùn)行,省去先 javac 編譯生成 class 再運(yùn)行的步驟 5. 增加對(duì) TLS 1.3 的支持

其他一些改進(jìn)可以參照 https://www.oracle.com/techne...

Java 12 switch 表達(dá)式

Java 12 以后,switch 不僅可以作為語句,也可以作為表達(dá)式。

private String switchTest(int i) {
    return switch (i) {
        case 1 -> "1";
        default -> "0";
    };
}

其他一些改進(jìn)可以參照 https://www.oracle.com/techne...

總結(jié)

參考資料

Java8
http://ifeve.com/java-8-featu...
https://juejin.im/post/5ae6bf...
https://wizardforcel.gitbooks...
https://www.oracle.com/techne...
https://www.oracle.com/techne...

Java9
http://www.runoob.com/java/ja...
https://docs.oracle.com/javas...
https://www.twle.cn/c/yufei/j...

Java10
https://baijiahao.baidu.com/s...
https://blog.csdn.net/visant/...
https://www.oracle.com/techne...

Java 11
https://openjdk.java.net/proj...
https://www.ctolib.com/topics...

Java 12
https://zhuanlan.zhihu.com/p/...

其他
https://www.baeldung.com/orac...
https://zh.wikipedia.org/wiki...
https://www.zhihu.com/questio...
https://juejin.im/post/5ca1c7...
https://gudong.name/2019/04/0...

歡迎關(guān)注下面賬號(hào),獲取最新技術(shù)文章:
Github
掘金
知乎

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76288.html

相關(guān)文章

  • 在Android項(xiàng)目中使用Java8

    摘要:現(xiàn)在爸爸終于讓平臺(tái)支持了,這篇文章中便來和大家聊聊如何在項(xiàng)目中配置使用。要想在項(xiàng)目中使用的新特性,需要將你的升級(jí)到及以上版本,并采用新的編譯。 轉(zhuǎn)載請(qǐng)注明出處:https://zhuanlan.zhihu.com/p/23279894 前言 在過去的文章中我介紹過Java8的一些新特性,包括: Java8新特性第1章(Lambda表達(dá)式) Java8新特性第2章(接口默認(rèn)方法) J...

    junnplus 評(píng)論0 收藏0
  • 樂字節(jié)-Java8核心特性實(shí)戰(zhàn)-接口默認(rèn)方法

    摘要:語法中接口可以包含實(shí)現(xiàn)方法,需要使用修飾,此類方法稱為默認(rèn)方法。核心特性接口默認(rèn)方法就介紹到這里了,后續(xù)小樂會(huì)繼續(xù)講述核心特性。 JAVA8已經(jīng)發(fā)布很久,是自java5(2004年發(fā)布)之后Oracle發(fā)布的最重要的一個(gè)版本。其中包括語言、編譯器、庫、工具和JVM等諸多方面的新特性,對(duì)于國內(nèi)外互聯(lián)網(wǎng)公司來說,Java8是以后技術(shù)開發(fā)的趨勢(shì)。這里主要講解在開發(fā)中幾個(gè)核心的新特性。(主要從...

    lbool 評(píng)論0 收藏0
  • 樂字節(jié)-Java8特性-接口默認(rèn)方法

    摘要:注意當(dāng)多個(gè)父接口中存在相同的默認(rèn)方法時(shí),子類中以就近原則繼承。定義靜態(tài)默認(rèn)方法這是版簡易計(jì)算器接口默認(rèn)方法使用定義接口并提供默認(rèn)打印方法定義接口默認(rèn)方法支持方法形參這是數(shù)值運(yùn)算基本接口。。。 總概 JAVA8 已經(jīng)發(fā)布很久,而且毫無疑問,java8是自java5(2004年發(fā)布)之后的最重要的版本。其中包括語言、編譯器、庫、工具和JVM等諸多方面的新特性。 Java8 新特性列表如下:...

    arashicage 評(píng)論0 收藏0
  • Java8 之 lambda 表達(dá)式、方法引用、函數(shù)式接口、默認(rèn)方式、靜態(tài)方法

    摘要:歐陽思海繼承接口后,又加了新的抽象方法,這個(gè)接口就不再是函數(shù)式接口默認(rèn)方法在接口中添加了一個(gè)默認(rèn)方法??偨Y(jié)在這篇文章中,我們講了表達(dá)式方法引用函數(shù)式接口接口中的靜態(tài)方法接口中的默認(rèn)方法的使用。 今天我來聊聊 Java8 的一些新的特性,確實(shí) Java8 的新特性的出現(xiàn),給開發(fā)者帶來了非常大的便利,可能剛剛開始的時(shí)候會(huì)有點(diǎn)不習(xí)慣的這種寫法,但是,當(dāng)你真正的熟悉了之后,你一定會(huì)愛上這些新的...

    isLishude 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

K_B_Z

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<