中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
【小家java】java8新特性(簡述十大新特性)

說在前面

你真的開始用JDK8了嗎? 如果你沒有用上一些新特性,請別說自己使用了Java8。

Java 8可謂是自Java 5以來最具革命性的版本了,她在語言、編譯器、類庫、開發(fā)工具以及Java虛擬機(jī)等方面都帶來了不少新特性。我們來一一回顧一下這些特性。

一、Lambda表達(dá)式

Lambda表達(dá)式可以說是Java 8最大的賣點,她將函數(shù)式編程引入了Java。Lambda允許把函數(shù)作為一個方法的參數(shù),或者把代碼看成數(shù)據(jù)。

一個Lambda表達(dá)式可以由用逗號分隔的參數(shù)列表、–>符號與函數(shù)體三部分表示。例如:

Arrays.asList( "p", "k", "u","f", "o", "r","k").forEach( e -> System.out.println( e ) );
  • 1

為了使現(xiàn)有函數(shù)更好的支持Lambda表達(dá)式,Java 8引入了函數(shù)式接口的概念。函數(shù)式接口就是只有一個方法的普通接口。java.lang.Runnable與java.util.concurrent.Callable是函數(shù)式接口最典型的例子。為此,Java 8增加了一種特殊的注解@FunctionalInterface

二、接口的默認(rèn)方法與靜態(tài)方法

我們可以在接口中定義默認(rèn)方法,使用default關(guān)鍵字,并提供默認(rèn)的實現(xiàn)。所有實現(xiàn)這個接口的類都會接受默認(rèn)方法的實現(xiàn),除非子類提供的自己的實現(xiàn)。例如:

 public interface DefaultFunctionInterface {     default String defaultFunction() {         return "default function";     } }
  • 1
  • 2
  • 3
  • 4
  • 5

我們還可以在接口中定義靜態(tài)方法,使用static關(guān)鍵字,也可以提供實現(xiàn)。例如:

 public interface StaticFunctionInterface {     static String staticFunction() {         return "static function";     } }
  • 1
  • 2
  • 3
  • 4
  • 5

接口的默認(rèn)方法和靜態(tài)方法的引入,其實可以認(rèn)為引入了C++中抽象類的理念,以后我們再也不用在每個實現(xiàn)類中都寫重復(fù)的代碼了。

三、方法引用(含構(gòu)造方法引用)

通常與Lambda表達(dá)式聯(lián)合使用,可以直接引用已有Java類或?qū)ο蟮姆椒āR话阌兴姆N不同的方法引用:

  1. 構(gòu)造器引用。語法是Class::new,或者更一般的Class< T >::new,要求構(gòu)造器方法是沒有參數(shù);
  2. 靜態(tài)方法引用。語法是Class::static_method,要求接受一個Class類型的參數(shù);
  3. 特定類的任意對象方法引用。它的語法是Class::method。要求方法是沒有參數(shù)的;
  4. 特定對象的方法引用,它的語法是instance::method。要求方法接受一個參數(shù),與3不同的地方在于,3是在列表元素上分別調(diào)用方法,而4是在某個對象上調(diào)用方法,將列表元素作為參數(shù)傳入;
四、重復(fù)注解

在Java 5中使用注解有一個限制,即相同的注解在同一位置只能聲明一次。Java 8引入重復(fù)注解,這樣相同的注解在同一地方也可以聲明多次。重復(fù)注解機(jī)制本身需要用@Repeatable注解。Java 8在編譯器層做了優(yōu)化,相同注解會以集合的方式保存,因此底層的原理并沒有變化。

五、擴(kuò)展注解的支持(類型注解)

Java 8擴(kuò)展了注解的上下文,幾乎可以為任何東西添加注解,包括局部變量、泛型類、父類與接口的實現(xiàn),連方法的異常也能添加注解。

private @NotNull String name;
  • 1
六、Optional

Java 8引入Optional類來防止空指針異常,Optional類最先是由Google的Guava項目引入的。Optional類實際上是個容器:它可以保存類型T的值,或者保存null。使用Optional類我們就不用顯式進(jìn)行空指針檢查了。

七、Stream

Stream API是把真正的函數(shù)式編程風(fēng)格引入到Java中。其實簡單來說可以把Stream理解為MapReduce,當(dāng)然Google的MapReduce的靈感也是來自函數(shù)式編程。她其實是一連串支持連續(xù)、并行聚集操作的元素。從語法上看,也很像linux的管道、或者鏈?zhǔn)骄幊?,代碼寫起來簡潔明了,非??釒洠?/p>

八、Date/Time API (JSR 310)

Java 8新的Date-Time API (JSR 310)受Joda-Time的影響,提供了新的java.time包,可以用來替代 java.util.Date和java.util.Calendar。一般會用到Clock、LocaleDate、LocalTime、LocaleDateTime、ZonedDateTime、Duration這些類,對于時間日期的改進(jìn)還是非常不錯的。

九、JavaScript引擎Nashorn

Nashorn允許在JVM上開發(fā)運(yùn)行JavaScript應(yīng)用,允許Java與JavaScript相互調(diào)用。

十、Base64

在Java 8中,Base64編碼成為了Java類庫的標(biāo)準(zhǔn)。Base64類同時還提供了對URL、MIME友好的編碼器與解碼器。

說在后面

除了這十大新特性之外,還有另外的一些新特性:

**更好的類型推測機(jī)制:**Java 8在類型推測方面有了很大的提高,這就使代碼更整潔,不需要太多的強(qiáng)制類型轉(zhuǎn)換了。

**編譯器優(yōu)化:**Java 8將方法的參數(shù)名加入了字節(jié)碼中,這樣在運(yùn)行時通過反射就能獲取到參數(shù)名,只需要在編譯時使用-parameters參數(shù)。

**并行(parallel)數(shù)組:**支持對數(shù)組進(jìn)行并行處理,主要是parallelSort()方法,它可以在多核機(jī)器上極大提高數(shù)組排序的速度。

**并發(fā)(Concurrency):**在新增Stream機(jī)制與Lambda的基礎(chǔ)之上,加入了一些新方法來支持聚集操作。

**Nashorn引擎jjs:**基于Nashorn引擎的命令行工具。它接受一些JavaScript源代碼為參數(shù),并且執(zhí)行這些源代碼。

**類依賴分析器jdeps:**可以顯示Java類的包級別或類級別的依賴。

JVM的PermGen空間被移除:取代它的是Metaspace(JEP 122)。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java的jdk已經(jīng)更新到15了,為什么你還在用java8?
Java 8 新特性概述
干貨分享:ASP.NET CORE(C#)與Spring Boot MVC(JAVA)異曲同工的編程方式總結(jié)
Java 8特性探究(1):通往lambda之路_語法篇
Java 8 新特性
Java|Java8 新特性
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服