2021-04-06

1. 介紹

JAVA作為使用的主力語言,掌握下其歷史發(fā)展也是有必要的腋逆⌒鲭梗看看從JAVA5開始到現(xiàn)在的JAVA9有哪些變化。借此機(jī)會惩歉,也可以看看哪些特性我們是已經(jīng)用到的等脂,哪些是還沒有用到的。

我們在IDEA里面也可以看到language level里面的信息撑蚌,這里也大致寫了下各個版本JDK的新特性上遥。

簡單概括下就是:

JAVA1.3:普通的原始的JAVA,基本語法相信大家都見過了

JAVA1.4:assert關(guān)鍵字

JAVA5:枚舉類型锨并、泛型露该、自動拆裝箱

JAVA6: @Override注解

JAVA7: <>符號、ARM支持第煮、支持多catch

JAVA8:Lamda表達(dá)式解幼,類型注解等

JAVA9: 模塊化、接口中的私有方法等

下面我們更加詳細(xì)的分析下各個版本有哪些新特性包警。

2. JAVA5新特性

2.1 泛型 Generics

引用泛型之后撵摆,允許指定集合里元素的類型,免去了強(qiáng)制類型轉(zhuǎn)換害晦,并且能在編譯時刻進(jìn)行類型檢查的好處特铝。Parameterized Type作為參數(shù)和返回值,Generic是vararg壹瘟、annotation鲫剿、enumeration、collection的基石稻轨。

泛型可以帶來如下的好處總結(jié)如下:

類型安全:拋棄List灵莲、Map,使用List?殴俱、Map?給它們添加元素或者使用Iterator?遍歷時政冻,編譯期就可以給你檢查出類型錯誤

方法參數(shù)和返回值加上了Type: 拋棄List枚抵、Map,使用List?明场、Map

不需要類型轉(zhuǎn)換:List?list=new ArrayList?();

類型通配符“?”: 假設(shè)一個打印List?中元素的方法printList,我們希望任何類型T的List?都可以被打印 ##2.2 枚舉類型 引入了枚舉類型 ##2.3 自動裝箱拆箱(自動類型包裝和解包)autoboxing & unboxing 簡單的說是類型自動轉(zhuǎn)換汽摹。 自動裝包:基本類型自動轉(zhuǎn)為包裝類(int ——Integer) 自動拆包:包裝類自動轉(zhuǎn)為基本類型(Integer——int) ##2.4 可變參數(shù)varargs(varargs number of arguments) 參數(shù)類型相同時,把重載函數(shù)合并到一起了苦锨。 如:

publicvoidtest(object... objs){for(Object obj:objs){? ? ? ? System.out.println(obj);? ? }}

2.5 Annotations(重要) 它是java中的metadata(注釋)

注解在JAVA5中就引入了逼泣。這是非常重要的特性。現(xiàn)在注解的應(yīng)用已經(jīng)隨處可見逆屡。不過JAVA5的注解還不成熟圾旨,沒法自定義注解。

2.6 新的迭代語句

for(intn:numbers){//process}

2.7 靜態(tài)導(dǎo)入(import static )

導(dǎo)入靜態(tài)對象魏蔗,可以省略些代碼砍的。不過這個也不常用。莺治、

importstaticjava.lang.System.out;//導(dǎo)入java.lang包下的System類的靜態(tài)方法out;publicclassHelloWorld{publicstaticvoidmain(String[] args){out.print("Hello World!");//既是在這里不用再寫成System.out.println("Hello World!")了廓鞠,因為已經(jīng)導(dǎo)入了這個靜態(tài)方法out。}}

2.8 新的格式化方法(java.util.Formatter)

formatter.format("Remaining account balance: $%.2f", balance);

2.9 新的線程模型和并發(fā)庫Thread Framework(重要)

最主要的就是引入了java.util.concurrent包谣旁,這個都是需要重點掌握的床佳。

HashMap的替代者ConcurrentHashMap和ArrayList的替代者CopyOnWriteArrayList

在大并發(fā)量讀取時采用java.util.concurrent包里的一些類會讓大家滿意BlockingQueue、Callable榄审、Executor砌们、Semaphore

3. JAVA6

JAVA6當(dāng)中

3.1 Web Services

優(yōu)先支持編寫 XML web service 客戶端程序。你可以用過簡單的annotaion將你的API發(fā)布成.NET交互的web services. Mustang 添加了新的解析和 XML 在 Java object-mapping APIs中, 之前只在Java EE平臺實現(xiàn)或者Java Web Services Pack中提供.

3.2 Scripting

現(xiàn)在你可以在Java源代碼中混入JavaScript了搁进,這對開發(fā)原型很有有用浪感,你也可以插入自己的腳本引擎。

3.3 JDBC4.0

JAVA6將聯(lián)合綁定 Java DB (Apache Derby). JDBC 4.0 增加了許多特性例如支持XML作為SQL數(shù)據(jù)類型饼问,更好的集成Binary Large OBjects (BLOBs) 和 Character Large OBjects (CLOBs) .

3.4 UI優(yōu)化

GUI 開發(fā)者可以有更多的技巧來使用 SwingWorker utility 影兽,以幫助GUI應(yīng)用中的多線程。, JTable 分類和過濾莱革,以及添加splash閃屏峻堰。

Swing擁有更好的 look-and-feel , LCD 文本呈現(xiàn), 整體GUI性能的提升。Java應(yīng)用程序可以和本地平臺更好的集成盅视,例如訪問平臺的系統(tǒng)托盤和開始菜單捐名。Mustang將Java插件技術(shù)和Java Web Start引擎統(tǒng)一了起來。 ##3.5 監(jiān)控管理增強(qiáng) 添加更多的診斷信息闹击,綁定了不是很知名的 memory-heap 分析工具Jhat 來查看內(nèi)核導(dǎo)出桐筏。 ##3.6 編譯API compiler API提供編程訪問javac,可以實現(xiàn)進(jìn)程內(nèi)編譯,動態(tài)產(chǎn)生Java代碼 ##3.7 自定義注解 Java tool和framework 提供商可以定義自己的 annotations 梅忌,并且內(nèi)核支持自定義annotation的插件和執(zhí)行處理器 ##3.8 安全性 XML-數(shù)字簽名(XML-DSIG) APIs 用于創(chuàng)建和操縱數(shù)字簽名); 新的方法來訪問本地平臺的安全服務(wù),例如本地Microsoft Windows for secure authentication and communicationnative 的Public Key Infrastructure (PKI) 和 cryptographic services除破, Java Generic Security Services (Java GSS) 和 Kerberos services for authentication, 以及訪問 LDAP servers 來認(rèn)證用戶.

4. JAVA7

4.1 集合類的語法支持

原來的樣子

List list =newArrayList();? ? ? ?? list.add("item");Stringitem = list.get(0);Setset=newHashSet();set.add("item");Map map =newHashMap();? ? ? ?? map.put("key",1);intvalue = map.get("key");

現(xiàn)在的樣子:(這些集合是不可變的...)

List list = ["item"];Stringitem = list[0];Setset= {"item"};Map map = {"key":1};intvalue = map["key"];

4.2 自動資源管理

Java中某些資源是需要手動關(guān)閉的牧氮,如InputStream,Writes瑰枫,Sockets踱葛,Sql classes等。這個新的語言特性允許try語句本身申請更多的資源光坝,這些資源作用于try代碼塊尸诽,并自動關(guān)閉。

以前的寫法:

BufferedReader br =newBufferedReader(newFileReader(path));try{returnbr.readLine();? ? ? ? ? ? ? ? }finally{? ? ? ? ? ? ? ? ? ? br.close();? ? ? ? ? }

現(xiàn)在的寫法(不需要finally來釋放資源了)

try (BufferedReaderbr = new BufferedReader(newFileReader(path)) {? ? ? ? ? ? ? return br.readLine();}

4.3 類型推斷

以前的寫法:

Map> anagrams =newHashMap>();

現(xiàn)在的寫法

Map> anagrams =newHashMap<>();

4.4 數(shù)字字面量下劃線支持

很長的數(shù)字可讀性不好盯另,在Java 7中可以使用下劃線分隔長int以及l(fā)ong了性含。如:

intone_million = 1_000_000;

這樣子還真看不慣。鸳惯。商蕴。不過的確是可讀性好了。

4.5 switch中使用string

String s ="test";switch(s) {case"test":?? System.out.println("test");case"test1":?? System.out.println("test1");break;default:?? System.out.println("break");break;?? }

4.6 新增一些取環(huán)境信息的工具方法

FileSystem.getJavaIoTempDir()// IO臨時文件夾? FileSystem.getJavaHomeDir()// JRE的安裝目錄? FileSystem.getUserHomeDir()// 當(dāng)前用戶目錄? FileSystem.getUserDir()// 啟動java進(jìn)程時所在的目錄5?

5. java8

5.1 lambda表達(dá)式

提供了lambda表達(dá)式芝发,增加了很多內(nèi)置函數(shù)式接口绪商。尤其是其中的stream接口提供了

5.2 注解改進(jìn)

例如支持多重注解,還有新的target等

進(jìn)群:697699179可以獲取Java各類入門學(xué)習(xí)資料辅鲸!

這是我的微信公眾號【編程study】各位大佬有空可以關(guān)注下格郁,每天更新Java學(xué)習(xí)方法,感謝独悴!

學(xué)習(xí)中遇到問題有不明白的地方例书,推薦加小編Java學(xué)習(xí)群:697699179內(nèi)有視頻教程 ,直播課程 绵患,等學(xué)習(xí)資料雾叭,期待你的加入

1人點贊

隨筆

作者:未影P

鏈接:http://www.reibang.com/p/498168f7c443

來源:簡書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)落蝙,非商業(yè)轉(zhuǎn)載請注明出處织狐。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市筏勒,隨后出現(xiàn)的幾起案子移迫,更是在濱河造成了極大的恐慌,老刑警劉巖管行,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厨埋,死亡現(xiàn)場離奇詭異,居然都是意外死亡捐顷,警方通過查閱死者的電腦和手機(jī)荡陷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門雨效,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人废赞,你說我怎么就攤上這事徽龟。” “怎么了唉地?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵据悔,是天一觀的道長。 經(jīng)常有香客問我耘沼,道長极颓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任群嗤,我火速辦了婚禮菠隆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘骚烧。我一直安慰自己浸赫,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布赃绊。 她就那樣靜靜地躺著既峡,像睡著了一般魔招。 火紅的嫁衣襯著肌膚如雪作谚。 梳的紋絲不亂的頭發(fā)上竟稳,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天邻辉,我揣著相機(jī)與錄音吁津,去河邊找鬼刨沦。 笑死记盒,一個胖子當(dāng)著我的面吹牛体啰,可吹牛的內(nèi)容都是我干的稻扬。 我是一名探鬼主播卦方,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泰佳!你這毒婦竟也來了盼砍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤逝她,失蹤者是張志新(化名)和其女友劉穎浇坐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體黔宛,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡近刘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片觉渴。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡介劫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出疆拘,到底是詐尸還是另有隱情蜕猫,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布哎迄,位于F島的核電站,受9級特大地震影響隆圆,放射性物質(zhì)發(fā)生泄漏漱挚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一渺氧、第九天 我趴在偏房一處隱蔽的房頂上張望旨涝。 院中可真熱鬧,春花似錦侣背、人聲如沸白华。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弧腥。三九已至,卻和暖如春潮太,著一層夾襖步出監(jiān)牢的瞬間管搪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工铡买, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留更鲁,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓奇钞,卻偏偏與公主長得像澡为,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子景埃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,860評論 2 361

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

  • 1. 介紹 JAVA作為使用的主力語言,掌握下其歷史發(fā)展也是有必要的蛤织「疤荆看看從JAVA5開始到現(xiàn)在的JAVA9有哪些...
    未影P閱讀 1,209評論 0 5
  • 1. 介紹 JAVA作為使用的主力語言是辕,掌握下其歷史發(fā)展也是有必要的×蕴幔看看從JAVA5開始到現(xiàn)在的JAVA9有哪些...
    編程小世界閱讀 3,899評論 7 13
  • (一)Java 5 相關(guān)知識點 1)增強(qiáng)型 for 循環(huán): 答:增強(qiáng) for 循環(huán):foreach 語句获三,fore...
    tjqbtp閱讀 512評論 0 1
  • 1 數(shù)組也是一種類型 Java中要求所有的數(shù)組元素具有相同的數(shù)據(jù)類型。因此在一個數(shù)組中锨苏,數(shù)組元素的類型是唯一的疙教,不...
    9K賬號閱讀 443評論 0 0
  • 給你學(xué)習(xí)路線:html-css-js-jq-javase-數(shù)據(jù)庫-jsp-servlet-Struts2-hibe...
    屈浩宇閱讀 151評論 0 0