新聞中心
一個小糾結(jié)
很多初學(xué)Java的小伙伴經(jīng)常咨詢:

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比德州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式德州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋德州地區(qū)。費用合理售后完善,十載實體公司更值得信賴。
- 到底該安裝哪個版本的JDK比較好?
- Java 8到底還夠不夠用?
- Java 11究竟有什么改進(jìn)?
- 是不是Java版本越新越好?
- ……
是這樣,官網(wǎng)現(xiàn)在其實都已經(jīng)出到Java 13版本了,并且提供下載使用。
但目前市場上主流的穩(wěn)定版當(dāng)然還得屬Java 8和Java 11,而目前大部分公司的生產(chǎn)環(huán)境還是 Java8居多。所以如果從自學(xué)角度出發(fā),我覺得這兩個版本都OK,其他中間的一些比如 Java9、 Java10這些非穩(wěn)定版就不用考慮了。
Java11 vs Java8
Java 11相對于Java 8確實有一部分進(jìn)化,除了有很多內(nèi)部的升級(比如開銷和時延更低的GC、TLS1.3加持等等)之外,對于初學(xué)使用者來說也有一些語言使用層面的進(jìn)化。
正好最近我在自己的個人小項目上嘗試升級使用了一下 Java11(公司項目咱也不敢動、也不敢問,只好動自己的個人項目),因此本文從實際代碼編寫角度來大致體驗一下我個人使用 Java11之后相對 Java8所感覺到的一些比較深刻的進(jìn)化,官方文檔里說得也非常清楚了: https://docs.oracle.com/en/java/javase/11/
我這次實驗裝的 Java11版本是 11.0.6:
下文將要實驗驗證的一些新特性其實也并非 Java11才引入,很多其實在 Java9和 Java10時就已經(jīng)引入,只不過到了 Java11這個穩(wěn)定版才沉淀下來。
變量類型推斷
新版Java引入了一個全新的類型關(guān)鍵字 var,用 var來定義的變量不用寫具體類型,編譯器能根據(jù) =右邊的實際賦值來自動推斷出變量的類型:
1、普通局部變量
怎么樣?是不是有一種在使用類似JavaScript這種弱類型語言的錯覺?
2、for循環(huán)中使用
這地方就能看出用 var定義局部變量的優(yōu)勢了,假如這個例子中集合里的元素類型更為復(fù)雜,是類似 List>這種嵌套類型的話, var定義就非常簡潔明了!
3、當(dāng)然,有些情況是不能使用的
var類型變量一旦賦值后,重新賦不同類型的值是不行的,比如:
定義 var類型變量沒有初始化是不行的,比如:
另外,像類的 成員變量類型、 方法入?yún)㈩愋汀?返回值類型等是不能使用 var的,比如:
官方HTTP Client加持
是的!
現(xiàn)在 JDK官方就自帶 HTTPClient了,位于 java.net.http包下,支持發(fā)送同步、異步的 HTTP請求,這樣一來,以前咱們常用的HTTP請求客戶端諸如: OKHttp、 HttpClient這種現(xiàn)在都可以退下了!
發(fā)送同步請求:
發(fā)送異步請求:
當(dāng)然你也可以自定義請求頭,比如攜帶 JWT Token權(quán)限信息去請求等:
String處理增強
新版字符串 String類型增加了諸如: isBlank()、 strip()、 repeat()等方便的字符串處理方法
集合增強
主要是增加了諸如 of()和 copyOf()等方法用于更加方便的創(chuàng)建和復(fù)制集合類型
函數(shù)式編程增強
我印象最深的是對 Stream流增加了諸如 takeWhile()和 dropWhile()的截止結(jié)算方法:
文件讀寫增強
1、Files類增強
我們以前心心念的直接能把文件內(nèi)容讀取到 String以及 String回寫到文件的功能終于支持了,可以通過 Files類的靜態(tài)方法 writeString()和 readString()完成:
2、InputStream增強
InputStream則增加了一個 transferTo()方法,直接將數(shù)據(jù)丟到 OutputStream去:
支持源文件直接運行(666!)
比如我寫一個最簡單的 HelloWorld程序:
并保存為 hello.java文件,這時候可以直接用 java指令去運行這個Java源文件,直接省去以前 javac編譯源文件的過程:
- java hello.java
怎么樣?是不是和python源文件的運行有點像?這個信息量就有點大了,大家可以自行腦補一下
小結(jié)
Java 11確有很多改進(jìn),但還是那句話,對于初學(xué)者來說Java 8足夠啦,沒必要刻意求新,穩(wěn)才是最重要的!
文章名稱:對不起我拖后腿了!我才剛用上Java 11
本文網(wǎng)址:http://m.fisionsoft.com.cn/article/cdepjoe.html


咨詢
建站咨詢
