Java8 vs Java11

Reference: 原文地址

目前市場上主流的穩(wěn)定版當(dāng)然還得屬Java 8和Java 11,而目前大部分公司的生產(chǎn)環(huán)境還是Java 8居多。
所以如果從自學(xué)角度出發(fā)平道,我覺得這兩個版本都OK,其他中間的一些比如Java 9株灸、Java 10這些非穩(wěn)定版就不用考慮了。
[Java11]vs Java8

Java 11相對于Java 8確實有一部分進(jìn)化擎值,除了有很多內(nèi)部的升級(比如開銷和時延更低的GC慌烧、TLS1.3加持等等)之外,對于初學(xué)使用者來說也有一些語言使用層面的進(jìn)化鸠儿。
變量類型

新版Java引入了一個全新的動態(tài)類型關(guān)鍵字var屹蚊,用var來定義的局部變量不用寫具體類型,編譯器能根據(jù)=右邊的實際賦值來自動推斷出變量的類型

var name = "lukis-tsai";
var list = List.of("lukis", "tsai", "handsome");
// var 在for循環(huán)更加簡單进每,在處理一些復(fù)雜的結(jié)構(gòu)時也更簡潔汹粤,如: List<List<String>>
for(var item : list) {
    System.out.println(item);
}

1 var只能在方法里定義,不允許定義類的成員變量

2 var定義的變量需要初始化田晚,一旦賦值后嘱兼,重新賦不同類型的值是不行的

3 var每次只能定義一個變量,不能復(fù)合聲明變量
官方HTTP Client加持

現(xiàn)在java11自帶HTTP Client了贤徒,位于java.net.http包下芹壕,支持發(fā)送同步胃惜、異步的HTTP請求

同步請求:

var request = HttpRequest.newBuilder()
        .uri( URI.create("https://blog.csdn.net") )
        .GET()
        .build();

// 同步請求方式,拿到結(jié)果前會阻塞當(dāng)前線程

var httpResponse = HttpClient.newHttpClient()
        .send( request, HttpResponse.BodyHandlers.ofString());

異步請求

CompletableFuture<String> future = HttpClient.newHttpClient().
        sendAsync( request, HttpResponse.BodyHandlers.ofString() )
        .thenApply( HttpResponse::body );
System.out.println("摸魚劃水喝茶....");
future.get();

String處理增強
新版字符串String類型增加了諸如:isBlank()哪雕、strip()、repeat()等方便的字符串處理方法

String myName = " lukis-tsai ";
 
System.out.println( "  ".isBlank()); // true
System.out.println( "  ".isEmpty()); // false
 
System.out.println( myName.strip());         // 去除空格
System.out.println( myName.stripLeading());  // 去除左空格
System.out.println( myName.stripTrailing() ); // 去除右空格
System.out.println( myName.repeat(2));       //  lukis-tsai  lukis-tsai

集合增強
主要是增加了諸如of()和copyOf()等方法用于更加方便的創(chuàng)建和復(fù)制集合類型

var list = List.of( "lukis", "tsai", "handsome" );
var conpyList = List.copyOf(list);
System.out.println(list);     // 打印 [lukis, tsai, handsome]
System.out.println(conpyList); // 打印 [lukis, tsai, handsome]
 
var set = Set.of("lukis","tsai");
var copySet = Set.copyOf(set);
System.out.println(set);      // 打印 [lukis, tsai]
System.out.println(conpySet);  // 打印 [lukis, tsai]
 
var map = Map.of("lukis","handsome","huahua","pretty");
var conpyMap = Map.copyOf(map);
System.out.println(map);      // 打印 {lukis=handsome, huahua=pretty}
System.out.println(copyMap);  // 打印 {lukis=handsome, huahua=pretty}

函數(shù)式編程增強
例如Stream 流增加了諸如takeWhile()和dropWhile()的截止結(jié)算方法

var list = List.of( "lukis", "huahua", "kimi" );
 
// 從集合中依次刪除滿足條件的元素鲫趁,直到不滿足條件為止
var subList = list.stream()
        .dropWhile( item -> item.equals("kimi") )
        .collect(Collectors.toList());
System.out.println(subList);  // 打印 ["lukis", "kimi"]
 
// 從集合中依次獲取滿足條件的元素斯嚎,知道不滿足條件為止
var subList1 = list.stream()
        .takeWhile( item -> item.equals("huahua") )
        .collect(Collectors.toList());
System.out.println( upListSub2 ); // 打印 ["huahua"]

文件讀寫增強
1、Files類增強
心心念的直接能把文件內(nèi)容讀取到String以及String回寫到文件的功能終于支持了,可以通過Files類的靜態(tài)方法writeString()和readString()完成

Path path = Paths.get("/Users/lukis/test.txt");
String content = Files.readString(path, StandardCharsets.UTF_8);
System.out.println(content);
Files.writeString( path, "王老七", StandardCharsets.UTF_8 );

2挨厚、InputStream增強
InputStream則增加了一個transferTo()方法堡僻,直接將數(shù)據(jù)丟到OutputStream去:

InputStream inputStream = new FileInputStream( "/Users/lukis/test.txt" );
OutputStream outputStream = new FileOutputStream( "/Users/lukis/test2.txt" );
inputStream.transferTo( outputStream );

支持源文件直接運行
這時候可以直接用java指令去運行Java源文件,直接省去以前javac編譯源文件的過程

java HelloWorld.java
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疫剃,一起剝皮案震驚了整個濱河市钉疫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌巢价,老刑警劉巖牲阁,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異壤躲,居然都是意外死亡城菊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門碉克,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凌唬,“玉大人,你說我怎么就攤上這事漏麦】退埃” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵撕贞,是天一觀的道長更耻。 經(jīng)常有香客問我,道長麻掸,這世上最難降的妖魔是什么酥夭? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮脊奋,結(jié)果婚禮上熬北,老公的妹妹穿的比我還像新娘。我一直安慰自己诚隙,他們只是感情好讶隐,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著久又,像睡著了一般巫延。 火紅的嫁衣襯著肌膚如雪效五。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天炉峰,我揣著相機與錄音畏妖,去河邊找鬼。 笑死疼阔,一個胖子當(dāng)著我的面吹牛戒劫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播婆廊,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼迅细,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了淘邻?” 一聲冷哼從身側(cè)響起茵典,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宾舅,沒想到半個月后统阿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡贴浙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年砂吞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崎溃。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜻直,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出袁串,到底是詐尸還是另有隱情概而,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布囱修,位于F島的核電站赎瑰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏破镰。R本人自食惡果不足惜餐曼,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鲜漩。 院中可真熱鬧源譬,春花似錦、人聲如沸孕似。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喉祭。三九已至养渴,卻和暖如春雷绢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背理卑。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工翘紊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人藐唠。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓霞溪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親中捆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容