1. 程式人生 > >最新的java11已經上線,快來看看

最新的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