999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺析JDK7中的語法改進

2011-12-31 00:00:00丁黎明

摘要:JDK是Java Development Kit的縮寫,包括Java語言的運行環境、工具和基礎類庫,是使用最為廣泛的Java SDK。JDK的每次升級都會帶來一些激動人心的改進,主要體現在語法、類庫和性能三個方面。文章從語法角度介紹即將發布的JDK7中引進的新特性,同時給出具體代碼,為新版本的編碼過程提供依據。

關鍵詞:二進制 字面量下劃線 精準捕獲 泛型推斷 語法改進

JDK7即將發布,相對以前的版本,它做出了很多改進。就語法方面,現在可以使用更加高效、安全的方式書寫代碼,以下分別從6個方面介紹這些變化。

1 二進制字面量

十進制是人在日常活動中最普遍使用的數制,可以方便地使用手指計數。在程序開發領域,十進制存在不能直觀體現量和含義之間關系的缺點,Java語言引進八進制和十六進制字面量,分別以“0”和“0x”作為前綴。在這次版本更新中,整數字面量第一次允許以二進制形式出現,它以“0b”作為字面量前綴,適合用在需要開關功能的場合。請瀏覽以下代碼,可以清晰地定義出文件訪問權限。

byte readable=0b00000001;

byte writable=0b00000010;

byte listable=0b00000100;

2 數字字面量下劃線

較長的數字在書寫過程中容易漏寫或多寫且不易察覺,可讀性也不高。數字字面量下劃線可以輔助解決上述問題。請比較以下兩行代碼,分別定義了我國2010年和2011年人口普查結果。

int number2010=1339724852;

int number2011=13_7053_6875;

下劃線的語法要求是,它的兩端必須是數字或下劃線。請瀏覽以下代碼,前兩行會造成編譯失敗,最后一行雖然能夠通過編譯,但可讀性較差。

double illegalVelocity1=_299792.458;

double illegalVelocity2=299792._458;

double illegibleVelocity=299792.4____58;

3 接受字符串的開關語句

使用switch-case語句代替if-else語句可以提高程序的可讀性。在以前的版本中,switch-case語句只接受整數類型和枚舉,很多開發人員和學者要求支持字符串,這在新版本中成為可能。請分析以下代碼,如果使用if-else語句將會非常麻煩。

String month=\"February\";

switch(month){

case \"January\":

case \"February\":

//另外10個case語句

}

4 泛型推斷

JDK5中增加的泛型元素,是Java語言類型安全的一次重大改進。雖然使用泛型可以在一定程度上優雅地實現了類型安全,但也有一個小小的不足——在多數情況下會造成冗余代碼。需要指出的是,泛型支持幾乎完全在編譯器上實現,編譯后字節碼不包含泛型信息。那么,為什么不增強編譯器去除冗余代碼呢?請觀察以下兩行代碼,它們均可以在JDK7中通過編譯。

List list1=new ArrayList();

List list2=new ArrayList<>();

5 自動資源管理

資源在使用完后必須顯式關閉,這是程序設計的一個常識。在Java語言中,以上過程通常使用close方法實現,并且需要使用try-catch-finally語句結構處理異常。請瀏覽以下典型代碼,實現了文件輸入流的建立、使用和關閉。

InputStream is=1;

try{

is=new FileInputStream(\"filename\");

is.read();

}catch(IOException e){

throw e;

}finally{

if(is!=1){

is.close();

}

}

這段代碼最著名的問題是開發人員經常會以錯誤的方式實現它;其次,與所完成的任務相比,代碼量非常大;最后,多數情況下引用pos在最后一個語句塊關閉時已經沒有使用價值,但隨后的代碼還可以訪問它。為了解決這些問題,JDK7中引入自動資源管理,可以代替開發人員關閉對象。請瀏覽以下代碼,它實現了相同的功能。

try(InputStream in=new FileInputStream(\"filename\")){

in.read();

}

6 更簡潔的捕獲

部分代碼會產生多種異常,需要使用多個cache捕獲,JDK7中引入了兩種方法簡化捕獲代碼。請瀏覽以下兩段cache語句,它們處理反射過程中產生的多種異常,實現相同的效果。

catch(final ClassNotFoundException|

InstantiationException|

NoSuchMethodException|

InvocationTargetException e){

throw e;

}

cache(final ReflectiveOperationException e){

throw e;

}

以上兩段代碼均向上層重新拋出異常,需要指出的是,異常對象e不可重新賦值;第二個cache語句中的ReflectiveOperationException異常類是前四個異常類的父類,但在上層只需要處理實際拋出的異常,這是由于JDK7可以精準地判斷異常類型。

7 結語

文中介紹的改進無疑會產生更加優雅的Java代碼,既增加了可讀性和安全性,又減少了代碼量。JDK7的改進并不止于此,它還實現了模塊化、引入Lambda表達式以及文件系統API等。作為開發人員,必須時刻了解語言和開發工具的最新動態,持續提高自身的業務能力。

參考文獻:

[1]馬朝暉,陳美紅.Java語言導學[M].北京:機械工業出版社.2003,1.

[2]陳昊鵬.Java編程思想.北京:機械工業出版社[M].2007,6.

主站蜘蛛池模板: 国产又粗又猛又爽视频| 国产区在线观看视频| 亚洲无码一区在线观看| 久久精品欧美一区二区| 亚洲综合中文字幕国产精品欧美| 精品一区二区三区自慰喷水| 欧美成人影院亚洲综合图| 亚洲欧美在线综合图区| 亚洲精品福利视频| 国产产在线精品亚洲aavv| 欧美日韩福利| 国产亚洲精品无码专| 中美日韩在线网免费毛片视频| 国产一区二区三区视频| 国产区人妖精品人妖精品视频| 欧美黄色网站在线看| 日本午夜在线视频| 国产精品lululu在线观看| 午夜a级毛片| 欧美激情首页| 国产精品yjizz视频网一二区| 亚洲成人网在线观看| 亚洲一区精品视频在线| www.国产福利| 中文字幕首页系列人妻| 国产老女人精品免费视频| 91久久偷偷做嫩草影院精品| 国产精品手机在线观看你懂的| 中文字幕精品一区二区三区视频| 57pao国产成视频免费播放| 亚洲欧美精品日韩欧美| 91久久夜色精品国产网站| 国产色网站| 婷婷六月色| 精品久久久久成人码免费动漫| 欧美在线中文字幕| 国内精品91| 在线观看无码av五月花| 亚洲国产精品无码AV| 国产香蕉97碰碰视频VA碰碰看| h网站在线播放| 久久久久国产精品嫩草影院| 超碰91免费人妻| 欧美精品成人| 亚洲精品手机在线| 欧美一级高清片久久99| 亚洲日本精品一区二区| 国产精品亚洲天堂| 99久久性生片| 亚洲午夜综合网| 国产女人在线视频| 激情乱人伦| 尤物精品视频一区二区三区| 99一级毛片| 国产成人久久综合777777麻豆| 欧美区国产区| 亚洲国产精品一区二区第一页免| 91青草视频| 激情無極限的亚洲一区免费| 久久五月天国产自| 亚洲天堂啪啪| 精品亚洲欧美中文字幕在线看| 一区二区理伦视频| 好吊色妇女免费视频免费| 国产粉嫩粉嫩的18在线播放91| 亚洲一区二区视频在线观看| 乱系列中文字幕在线视频| 久久精品视频一| 色成人亚洲| 一级毛片免费观看久| 成年人福利视频| 亚洲一区二区约美女探花| 国产精品专区第一页在线观看| 波多野结衣一区二区三区88| 香蕉伊思人视频| 国产视频一区二区在线观看| 伊人久久综在合线亚洲91| 免费在线a视频| 日本不卡免费高清视频| 欧美va亚洲va香蕉在线| 亚洲天堂久久| 中文字幕在线日本|