最新的java11已經上線,快來看看
聽說Java 11支援Java 9和Java 10並且其擴充套件支援到2026年,那麼Java 9-Java11有啥子好用讓人稱讚的特性呢?
一、集合加強(Java9)
Java9中為(List、set、Map)集合都添加了of和copy of方法,可用來建立不可變的集合。
/** copyOf方法會先判斷源集合是不是AbstractImmutableList型別的,如果是就直接返回,否則就呼叫of建立一個新的集合。 */ var list = List.of("香蕉","桃子","玉露瓊漿"); var copy = List.copyOf(list); sout(list ==copy);//true /** 因為是用的new建立的集合,不屬於不可變的AbstractImmutableList類的子類,copyOf直接建立了一個新的例項,所以false啦。 */ var list = new ArrayList<String>(); var copy2 = List.copyOf(list); sout(list ==copy);//false
注意:使用 of 和 copyOf 建立的集合為不可變集合,不能進行新增、刪除、替換、排序等操作,不然會報 java.lang.UnsupportedOperationException
異常。
二、Stream加強
//1、增加單個引數構造方法,可為null Stream.ofNullable(null).count();//0 //2、增加takeWhile和dropWhile方法,takeWhile 當達到一定條件就結束 結果:[1,2] Stream.of(1,2,3,2,1).takeWhile(n->n<3).collect(Collectors.toList()); //一旦n<3不成立就計算 Stream.of(1,2,3,2,1).dropWhile(n->n<3).collect(Collectors.toList()); //3、iterage過載 //原來控制終止方式 Stream.iterate(1,i->i+1).limit(10).forEach(System.out::println); //現在終止方式 Stream.iterate(1,i->i<100,i->i+1).forEach(System.out::println);
三、本地變數型別推斷(Java10)
var javastack = "javastack"; sout(javastack); /** 區域性變數型別推斷是使用var定義,不寫具體型別,編譯器能夠根據右邊的表示式自動推斷型別。 我滴個乖乖,var 可是js 的變數,java 咋還看上了,還那麼強能夠推斷出型別,真心好,強語言開始能夠自我識別了,但是隻是語法糖,是區域性變數使用的,如下:而不能是類成員變數型別,不能是方法返回型別,Lambda表示式。 */ //在接收方法返回值定義區域性變數 private static void testMethod(){ var javastack = getJavaStack(); sout(javastack); } public static String getJavastack(){ return "javastack"; } //迴圈體中定義區域性變數 private static void testLoop(){ for(var i= 0 ; i<3;i++){ for (var m = 100;m<15;m++){ sout(i+m); } } } //泛型結合區域性變數 private static void testLoop(){ //<>從jdk1.7開始不用帶具體型別,在介面中指明 List <String> list1 = new ArrayList<>(); //<>裡面是Object,可以新增任意型別 var list2 = new Array<>(); list2.add(2018); //<>強制使用String來指定泛型 var list3 = new ArrayList<String>(); list3.add("javastack"); }
四、字串加強(Java 11)
// 判斷字串是否為空白
" ".isBlank(); // true
// 去除首尾空格
" Javastack ".strip(); // "Javastack"
// 去除尾部空格
" Javastack ".stripTrailing(); // " Javastack"
// 去除首部空格
" Javastack ".stripLeading(); // "Javastack "
// 複製字串
"Java".repeat(3); // "JavaJavaJava"
// 行數統計
"A\nB\nC".lines().count(); // 3
五、Optional加強(求帶)
Optional新增方法使得當一個空Optional時可以替代,還有很方便將一個Optional轉換為Stream的方法
Optional.of("javastack").orElseThrow();//javastack
Optional.of("javastack").stream().count();//1
OPtional.ofNullable(null).or(()->OPtional.of("javastack")).get();//javastack
六、InputStream加強
InputStream新增一個transferTo,可以用來將資料直接傳輸到OutputStream
var classLoader = ClassLoader.getSystemClassLoader();
var inputStream = classLoader.getResourceAsStream("javastack.txt");
var javastack = File.creatTemFile("javastack2","txt");
try (var outputStream = new FileOutputStream(javastack)) {
inputStream.transferTo(outputStream);
}
七、HTTP Client API
Java 11將Java9的HTTP Client API放在了java.net包下面了,已經可以使用,該API支援同步和非同步。
var request = HttpRequest.newBuilder()
.uri(URI.create("https://javastack.cn"))
.GET()
.build();
var client = HttpClient.newHttpClient();
// 同步
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
// 非同步
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println);
八、一個java命令搞定編譯執行
//之前先編譯,後執行
javac JavaCompliteRun.class
java JavaCompliteRun
//java 11中
java JavaCompliteRun.java
九、其他新特性如下圖
相關推薦
最新的java11已經上線,快來看看
聽說Java 11支援Java 9和Java 10並且其擴充套件支援到2026年,那麼Java 9-Java11有啥子好用讓人稱讚的特性呢? 一、集合加強(Java9) Java9中為(List、set、Map)集合都添加了of和copy of方法,可用來建立不可變的集合
51CTO博客2.0新功能上線,快來跟我一起用一句話介紹自己
博客 proc HR BE cdc TP image pro 功能 在今天這個萬眾矚目世界杯,人人等待端午節的日子裏,我們51CTO博客2.0終於又迎來了一次版本更新。 現在大家跟我一起使用本次更新的新功能,用一句話介紹自己吧!! Q:一句話簡介可以在那兒被看到?
MySQL的事務,容易懂,快來看看吧!
事務 1.儲存引擎 Mysql核心儲存引擎。 Mysql5.5 預設採用innoDB。(my.ini) 2.什麼是事務 事務用於保證資料的一致性,由一組DML操作組成,該組SQL語句要麼同時成功,要麼同時失敗。例如轉賬。 3.事務
小程式又放大招,小程式支援直播,快來看看你能夠開發自己的直播小程式嗎?
小程式又放大招,小程式支援直播,快來看看你能夠開發自己的直播小程式嗎? https://blog.csdn.net/towtotow/article/details/78923839 https://blog.csdn.net/u012536034/article/details/80524748 &n
PDF轉CAD,快來看看
從事CAD相關工作的小夥伴們應該都知道,在日常工作中,我們經常會遇到關於CAD格式轉換的問題。其中PDF轉CAD就是其中非常常見的。那麼PDF轉CAD,該如何轉換才更加簡潔呢?小編今天就給大傢俱體演示一下。具體演示步驟如下: 步驟一:我們在瀏覽器裡搜尋迅捷CAD
#Java基礎知識之面試題總結,快來看看你會了嗎!
什麼是Java程式的主類?應用程式和小程式的主類有何不同? 一個程式中可以有多個類,但只能有一個類是主類。在Java應用程式中,這個主類是指包含main()方法的類。而在Java小程式中,這個主類是一個繼承自系統類JApplet或Applet的子類。應用程式的主
在程式設計師面前千萬不要說這9句話,快來看看撒~
最近,有幾位程式設計師朋友,向我吐槽,經常有人和他說一些讓他惱怒的話,他聽完都想打人啦。 我聽完之後也是哭笑不得,將這些程式設計師朋友的話給整理出來了,大家以後在程式設計師面前說話可得小心點。。 01“我先下班了啦~你加油喔。” 作為同事,你真的不怕你明天的電腦打不開嗎? 02
MGC Group講幣圈的5大思想誤區,快來看看吧!
在幣圈,成功的人各有各的輝煌,而失敗者都是相似的,究其原因,很多都是犯了認知上的思想錯誤,為了讓大家有則改之無則加勉,我們為大家梳理了5個思想誤區,來瞅瞅,你是否中招了呢? 1、一進入幣圈,就想暴富。 許多剛進入幣圈的小白,總是希望牛人趕緊告訴自己百倍幣千倍幣在哪
uvaoj10341(詳解 + 一直WA的,快來看看)
Solve the equation: p ∗ e −x + q ∗ sin(x) + r ∗ cos(x) + s ∗ tan(x) + t ∗ x 2 + u = 0 where 0 ≤ x ≤ 1.Input Input consists of multiple test cases and termi
全網最詳細的Ceph14.2.5叢集部署及配置檔案詳解,快來看看吧! -- <2>
部署Ceph叢集 Ceph版本選擇 Ceph版本來源介紹 Ceph 社群最新版本是 14,而 Ceph 12 是市面用的最廣的穩定版本。 第一個 Ceph 版本是 0.1 ,要回溯到 2008 年 1 月。多年來,版本號方案一直沒變,直到 2015 年 4 月 0.94.1 ( Hammer 的第一個修正版)
快來看看Google出品的Protocol Buffer,別僅僅會用Json和XML了
println 輸出流 基本數據類型 下一個 ebr sid 官網 序列 reg 前言 習慣用 Json、XML 數據存儲格式的你們,相信大多都沒聽過Protocol Buffer Protocol Buffer 事實上 是 Google出品的一種輕
51CTO訂閱專欄小程序上線了,首次體驗還有24元無門檻禮包相送,快來體驗吧~~
block src 選擇 51cto strong 服務 分享 com 樂趣 訂了專欄在那看?在PC?在H5?還是在服務號? 現在你又多了一個選擇,那就是51CTO訂閱專欄微 信小程序。 全新的頁面,全新的閱讀體驗: 首次體驗小程序有小程序新人禮包相送: 還在
Java語法基礎梳理,不會的小白快來看看了
Java 概述 1991 年Sun公司的James Gosling(詹姆斯·高斯林)等人開始開發名稱為 Oak 的語言,希望用於控制嵌入在有線電視交換盒、PDA等的微處理器;1994年將Oak語言更名為Java; 基本概念 JDK Java Development Kit,jav
快來看看Google出品的Protocol Buffer,別隻會用Json和XML了
前言 習慣用 Json、XML 資料儲存格式的你們,相信大多都沒聽過Protocol BufferProtocol Buffer 其實 是 Google出品的一種輕量 & 高效的結構化資料儲存格式,效能比 Json、XML 真的強!太!多! 由於 Google出品
APP開發終結者來襲,快來體驗吧!
服務 一個 申請 選擇 ref 手機 整體 設計 意見 21世紀人們最離不開的是什麽?無疑是手機!而手機中最令人著迷的是什麽?答案是各種類型的應用APP,不管是令無數人瘋狂的手遊-王者榮耀,還是微博,微信等的社交APP,更有新聞,購物,生活類的APP數不勝數。毫無疑問,現如
單例模式不是一件小事,快回來看看
use 需要 簡單的 ini blog system faq 依然 集中 上次寫了一篇《單例模式那件小事,看了你不會後悔》的文章,總結了常用的單例模式的實現。本文是上文的延續,單例模式絕不是一件小事,想弄清楚,真不是那麽簡單的。上文提到了常用的三種單例模式的實現方法:餓
扼殺孩子樂觀性格的10大語錄 快來看看你說過嗎?
AI 努力 玩具 爸爸 是我 原本 能夠 失望 感恩 陽光般溫暖燦爛的笑容、平和開朗的脾氣、遇事從容不緊張、自信快樂的寶貝,相信每個媽媽都希望擁有吧。但有時我們幾句無心的話,卻會扼殺孩子的樂觀性格,這些話你有沒有說過呢? 當孩子被贊賞時說 |沒有沒有,我們並沒有這麽優
關於群控系統你知道多少?網友:開學季,快來學習啦
cee 系統 微營銷 image term tex 控制 微信營銷 推廣 在這個流量為王的時代,市面上很多企業都面臨著“怎麽找精準客戶這個問題”,許多的企業一定嘗試過各種各樣的營銷方式,模式也是千變萬變,盡管如此大部分的企業抓不住怎麽吸粉這一關鍵點,怎麽去轉化。也有太多的企
快來看看與OpenStack掛鉤的高性能邊緣雲軟件堆棧StarlingX
ron toc user 結合 技術發展 xtra check tle around
快來看看與OpenStack掛鉤的高效能邊緣雲軟體堆疊StarlingX
StarlingX既是一個開發專案又是一個整合專案。它將新服務與更多開源專案結合到一個總體邊緣雲軟體堆疊中。 基於由英特爾和Wind River提供並由OpenStack Foundation託管的程式碼。它將自己的元件與率先的開源專案(包含OpenStack、Ceph和O