Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
Java 8?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚?
璇戞敞锛氫絾瑙佹柊浜虹瑧锛屽摢闂绘棫浜哄摥銆傚湪澶у閮藉湪鍏磋嚧鍕冨媰鐨勮璁篔ava 8鐨勬椂鍊欙紝閭d釜鏃╄閬楀繕鐨凧ava 7锛屾垨璁镐綘浠庢潵閮芥病鏈夎寰楀畠鐨勫ソ銆?
Java 8鐨勫彂甯冧篃鏈変竴涓湀浜嗭紝鎴戠浉淇$幇鍦ㄥぇ瀹堕兘鍦ㄦ帰绱DK 8涓殑鏂扮壒鎬с€備絾鏄紝鍦ㄤ綘褰诲簳寮€濮嬮捇鐮擩ava 8涔嬪墠锛屾渶濂藉厛鏉ュ洖椤句笅Java 7鏈夊摢浜涙柊鐗规€с€傚鏋滀綘杩樿寰楃殑璇濓紝Java 6鏄病鏈夊鍔犱换浣曠壒鎬х殑锛屽彧鏄疛VM鐨勪竴浜涙敼鍔ㄤ互鍙婃€ц兘鐨勬彁鍗囷紝涓嶈繃JDK 7鍊掓槸澧炲姞浜嗕笉灏戞湁鍔╀簬鎻愬崌寮€鍙戞晥鐜囩殑寰堢粰鍔涚殑鐗规€с€傛垜鐜板湪鍐欒繖绡囨枃绔犵殑鐩殑鏄粈涔堝憿锛熶负浠€涔堝埆浜洪兘鍦ㄨ璁篔ava 8鐨勬椂鍊欙紝鎴戝嵈杩樺湪鑱奐ava1.7鐨勪簨锛熷洜涓烘垜璁や负骞朵笉鏄墍鏈夌殑Java寮€鍙戜汉鍛橀兘寰堟竻妤欽DK 7涓殑鏀瑰姩锛岃繕鏈変粈涔堟椂鍊欐瘮鏂扮増鏈彂甯冪殑鏃跺€欐洿閫傚悎浠嬬粛涓婁竴鐗堟湰鐨勭壒鎬х殑鍛紵鎴戣繕寰堝皯鐪嬭鏈夊紑鍙戜汉鍛樺湪浠g爜涓娇鐢ㄨ嚜鍔ㄨ祫婧愮鐞嗭紙ARM锛夛紝灏界IDE鐨勮緟鍔╁伐鍏烽兘宸茬粡鏀寔杩欎釜鐗规€т簡銆備笉杩囩‘瀹炵湅鍒版湁浜哄湪鐢╯tring鐨剆witch鍔熻兘浠ュ強<>鍦ㄥ仛绫诲瀷鎺ㄥ锛屽彟澶栵紝涔熷緢灏戞湁浜虹煡閬揻ork-join妗嗘灦锛屾垨鑰呭湪涓€涓猚atch鍧楅噷鎹曡幏澶氫釜寮傚父锛屾垨鑰呭湪鏁板€煎瀷瀛楅潰閲忎腑浣跨敤涓嬪垝绾裤€傚洜姝ゆ垜鍊熻繖涓満浼氭潵鍐欎竴绡囩畝鐭殑鎽樿锛屽洖椤句竴涓嬭繖浜涜兘鏂逛究鎴戜滑鏃ュ父寮€鍙戝伐浣滅殑鏀瑰姩銆侼IO浠ュ強鏂扮殑鏂囦欢鎺ュ彛锛岃繕鏈夊緢澶欰PI灞傞潰鐨勬敼鍔ㄤ篃鍚屾牱鍊煎緱鍏虫敞銆傛垜鐩镐俊鍜孞ava 8鐨刲ambda琛ㄨ揪寮忕粨鍚堣捣鏉ュ悗锛屽啓鍑烘潵鐨勪唬鐮佽偗瀹氫細鏇村姞绠€娲併€?
1. 绫诲瀷鎺ㄥ
JDK 1.7寮曞叆涓€涓柊鐨勬搷浣滅<>锛屼篃琚О浣滈捇鐭虫搷浣滅锛屽畠浣垮緱鏋勯€犳柟娉曚篃鍙互杩涜绫诲瀷鎺ㄥ 銆傚湪Java 7涔嬪墠锛岀被鍨嬫帹瀵煎彧瀵规柟娉曞彲鐢紝姝eJoshua Bloch鍦╛Effiective Java_绗簩鐗堜腑鎵€棰勮█ 鐨勯偅鏍凤紝鐜板湪缁堜簬鍦ㄦ瀯閫犳柟娉曚腑瀹炵幇浜嗐€傚湪杩欎箣鍓嶏紝浣犲緱鍦ㄥ璞″垱寤鸿〃杈惧紡鐨勫乏鍙充袱杈瑰悓鏃舵寚瀹氱被鍨嬶紝鐜板湪浣犲彧闇€瑕佸湪宸﹁竟鎸囧畾灏卞彲浠ヤ簡锛屽氨鍍忎笅闈㈣繖鏍枫€?
JDK 7涔嬪墠
JDK 7
鍦↗ava 7涓彲浠ュ皯鏁蹭簺浠g爜浜嗭紝灏ゅ叾鏄湪浣跨敤闆嗗悎鐨勬椂鍊欙紝鍥犱负閭i噷澶ч噺鐢ㄥ埌浜嗘硾鍨嬨€傜偣鍑昏繖閲屼簡瑙f洿澶氬叧浜嶫ava閽荤煶鎿嶄綔绗︾殑淇℃伅銆傦紙璇戞敞锛氬師鏂囨病鎻愪緵閾炬帴鍟婏級
2. 鍦╯witch涓敮鎸丼tring
鍦↗DK 7涔嬪墠 锛屽彧鏈夋暣鍨嬫墠鑳界敤浣渟witch-case璇彞鐨勯€夋嫨鍥犲瓙銆傚湪JDK7涓紝浣犲彲浠ュ皢String鐢ㄤ綔閫夋嫨鍥犲瓙浜嗐€傛瘮濡傦細
姣旇緝鐨勬椂鍊欎細鐢ㄥ埌String鐨別quals鍜宧ashCode()鏂规硶锛屽洜姝よ繖涓瘮杈冩槸澶у皬鍐欐晱鎰熺殑銆傚湪switch涓娇鐢⊿tring鐨勫ソ澶勬槸锛屽拰鐩存帴鐢╥f-else鐩告瘮 锛岀紪璇戝櫒鍙互鐢熸垚鏇撮珮鏁堢殑浠g爜銆傛洿璇︾粏鐨勮鏄庤鐐瑰嚮杩欓噷銆?
3. 鑷姩璧勬簮绠$悊锛圓utomatic Resource Management锛?
鍦↗DK 7涔嬪墠锛屾垜浠渶瑕佷娇鐢ㄤ竴涓猣inally鍧楋紝鏉ョ‘淇濊祫婧愮‘瀹炶閲婃斁鎺夛紝涓嶇try鍧楁槸瀹屾垚浜嗚繕鏄腑鏂簡銆傛瘮濡傝璇诲彇鏂囦欢鎴栬€呰緭鍏ユ祦鐨勬椂鍊欙紝鎴戜滑闇€瑕佸湪finally鍧椾腑鍏抽棴瀹冧滑锛岃繖鏍蜂細瀵艰嚧寰堝鐨勬牱鏉夸唬鐮侊紝灏卞儚涓嬮潰杩欐牱锛?
鐪嬩笅杩欐浠g爜 锛屾槸涓嶆槸寰堝鏍锋澘浠g爜锛?
鑰屽湪Java 7閲岄潰锛屼綘鍙互浣跨敤try-with-resource鐨勭壒鎬ф潵鑷姩鍏抽棴璧勬簮锛屽彧瑕佹槸瀹炵幇浜咥utoClosable鍜孋loaeable鎺ュ彛鐨勯兘鍙互锛孲tream, File, Socket锛屾暟鎹簱杩炴帴绛夐兘宸茬粡瀹炵幇浜嗐€侸DK 7寮曞叆浜唗ry-with-resource璇彞锛屾潵纭繚姣忎釜璧勬簮鍦ㄨ鍙ョ粨鏉熷悗閮戒細璋冪敤AutoCLosable鎺ュ彛鐨刢lose()鏂规硶杩涜鍏抽棴銆備笅闈㈡槸Java 7涓殑涓€娈电ず渚嬩唬鐮侊紝瀹冪湅璧锋潵鍙槸绠€娲佸浜嗭細
鐢变簬Java璐熻矗鍏抽棴閭d簺鎵撳紑鐨勮祫婧愭瘮濡傛枃浠跺拰娴佽繖绉嶏紝鍥犳鏂囦欢鎻忚堪绗︽硠闇茬殑浜嬫儏搴旇涓嶄細鍐嶅彂鐢熶簡锛屽簲璇ヤ篃涓嶄細鍐嶇湅鍒版枃浠舵弿杩扮閿欒鐨勬彁绀轰簡銆傜敋鑷矹DBC 4.1閮藉凡缁忓紑濮嬫敮鎸佷簡AutoClosable浜嗐€?
4. Fork Join妗嗘灦
Fork/join妗嗘灦鏄疎xecutorService鎺ュ彛鐨勫疄鐜帮紝瀹冧娇寰椾綘鍙互鍏呭垎鍒╃敤鐜颁唬鏈嶅姟鍣ㄥ澶勭悊鍣ㄥ甫鏉ョ殑濂藉銆傝繖涓鏋舵槸涓轰簡閭d簺鑳介€掑綊鍦版媶鍒嗘垚鏇村皬浠诲姟鐨勫伐浣滆€岃璁$殑銆傚畠鐨勭洰鏍囨槸鍘诲帇姒ㄥ鐞嗗櫒鐨勮兘鍔涗互鎻愬崌绋嬪簭鐨勬€ц兘銆傚氨鍍忓埆鐨凟xecutorService鐨勫疄鐜颁竴鏍凤紝fork/join妗嗘灦涔熸槸鎶婁换鍔″垎鍙戠粰绾跨▼姹犱腑鐨勫涓嚎绋嬨€傚畠鐨勪笉鍚屼箣澶勫湪浜庡畠浣跨敤鐨勬槸涓€绉嶅伐浣滅獌鍙栫畻娉曪紙work-stealing algorithm锛夛紝杩欏拰鐢熶骇鑰呮秷璐硅€呯殑绠楁硶鏈夊緢澶х殑涓嶅悓銆傚凡缁忓鐞嗗畬浠诲姟鐨勫伐浣滅嚎绋嬪彲浠ヤ粠鍒殑绻佸繖鐨勭嚎绋嬮偅閲岀獌鍙栦竴浜涗换鍔℃潵鎵ц銆俧ork/join妗嗘灦鐨勬牳蹇冩槸ForkJoinPool绫伙紝瀹冪户鎵胯嚜AbstractExecutorService銆侳orkJoinPool绫诲疄鐜颁簡鏍稿績鐨勫伐浣滅獌鍙栫畻娉曪紝鍙互鎵цForkJoinTask杩涚▼銆備綘鍙互鎶婁唬鐮佸皝瑁呭湪涓€涓狥orkJoinTask鐨勫瓙绫婚噷锛屾瘮濡俁ecursiveTask鎴栬€匯ecursiveAction銆傛洿澶氫俊鎭氨鍙傝€?a target="_blank" href="http://javarevisited.blogspot.com/2011/09/fork-join-task-java7-tutorial.html">杩欓噷銆?
5. 鏁板€煎瓧闈㈤噺涓娇鐢ㄤ笅鍒掔嚎
JDK 7涓紝浣犲彲浠ュ湪鏁板€煎瓧闈㈤噺涓娇鐢?_'鏉ユ彁鍗囧彲璇绘€с€傝繖瀵瑰湪婧愪唬鐮佷腑浣跨敤浜嗗ぇ鏁板瓧鐨勪汉鏉ヨ灏ゅ叾鏈夌敤锛屼緥濡傚湪閲戣瀺鎴栬€呰绠楅鍩熶腑銆傛瘮鏂硅杩欎箞鍐欙紝
浣犲彲浠ュ湪鍚堥€傜殑浣嶇疆鎻掑叆涓嬪垝绾夸娇寰楀畠鍙鎬ф洿寮猴紝姣斿璇翠竴涓緢澶х殑鏁板瓧鍙互姣忛殧涓変綅鏀句竴涓笅鍒掔嚎锛屽浜庝俊鐢ㄥ崱鍗″彿鑰岃█锛岄€氬父鏄?6浣嶉暱搴︼紝浣犲彲浠ユ瘡闅?涓暟瀛楀氨鏀句竴涓笅鍒掔嚎锛屽氨濡傚畠浠湪鍗$墖涓婃墍鏄剧ず鐨勯偅鏍枫€傞『渚胯涓€鍙ワ紝瑕佽浣忥紝浣犱笉鑳藉湪灏忔暟鍚庨潰锛屾垨鑰呮暟瀛楃殑寮€濮嬪拰缁撴潫鐨勫湴鏂规斁涓嬪垝绾裤€傛瘮濡傝锛屼笅闈㈢殑鏁板€煎瓧闈㈤噺灏辨槸涓嶆纭殑锛屽洜涓哄畠浠敊璇湴浣跨敤浜嗕笅鍒掔嚎锛?
浣犲彲浠ヨ涓嬫垜鐨?a target="_blank" href="http://javarevisited.blogspot.sg/2014/03/why-use-underscore-in-numbers-from-java-SE-7-numeric-literals.html">杩欑瘒鏂囩珷浜嗚В鏇村鐨勪竴浜涘叧浜庝笅鍒掔嚎浣跨敤鐨勪緥瀛愩€?
6. 鍦ㄤ竴涓猚atch鍧椾腑鎹曡幏澶氫釜寮傚父
JDK 7涓紝鍗曚釜catch鍧楀彲浠ュ鐞嗗涓紓甯哥被鍨嬨€?
姣斿璇村湪JDK 7涔嬪墠锛屽鏋滀綘鎯虫崟鑾蜂袱绉嶇被鍨嬬殑寮傚父浣犲緱闇€瑕佷袱涓猚atch鍧楋紝灏界涓や釜鐨勫鐞嗛€昏緫閮芥槸涓€鏍风殑锛?
鑰屽湪JDK 7涓紝浣犲彧椤讳娇鐢ㄤ竴涓猚atch鍧楀氨鎼炲畾浜嗭紝寮傚父绫诲瀷鐢ㄢ€榺鈥欒繘琛屽垎闅旓細
椤轰究璇翠竴鍙ワ紝杩欑鐢ㄦ硶鏄笉鍖呮嫭寮傚父鐨勫瓙绫诲瀷鐨勩€傛瘮濡傝锛屼笅闈㈣繖涓涓紓甯哥殑鎹曡幏璇彞灏变細鎶涘嚭缂栬瘧閿欒锛?
杩欐槸鍥犱负FileNotFoundException鏄疘OException 鐨勫瓙绫伙紝鍦ㄧ紪璇戠殑鏃跺€欎細鎶涘嚭涓嬮潰鐨勯敊璇細
java.io.FileNotFoundException is a subclass of alternative java.io.IOException
at Test.main(Test.java:18)銆?
浜嗚В鏇村璇风偣鍑?a target="_blank" href="http://java67.blogspot.sg/2013/01/java-7-improved-exception-handling-multiple-catch-block.html">杩欓噷銆?
7. 浣跨敤"0b"鍓嶇紑鐨勪簩杩涘埗瀛楅潰閲?
JDK7涓紝瀵逛簬鏁村瀷绫诲瀷锛坆yte, short, int 鍜宭ong)鏉ヨ锛屼綘鍙互鐢?0b'鍓嶇紑鏉ヨ〃鏄庤繖鏄竴涓簩杩涘埗鐨勫瓧闈㈤噺锛屽氨鍍廋/C++涓偅鏍枫€傚湪杩欎箣鍓嶏紝浣犲彧鑳戒娇鐢?杩涘埗锛堝墠缂€'0'锛夋垨鑰?6杩涘埗锛堝墠缂€鏄?0x'鎴栬€呪€?X'锛夌殑瀛楅潰閲忋€?
杩欐牱鍐欏ソ澶勬洿鏄庢樉锛?
8.Java NIO 2
Java SE 7涓紩鍏ヤ簡java.nio.file鍖咃紝浠ュ強鐩稿叧鐨刯ava.nio.file.attibute鍖咃紝鍏ㄩ潰鏀寔浜嗘枃浠禝O浠ュ強瀵归粯璁ゆ枃浠剁郴缁熺殑璁块棶銆傚畠鍚屾椂杩樺紩鍏ヤ簡Path 绫伙紝浣犲彲浠ョ敤瀹冩潵浠h〃鎿嶄綔绯荤粺涓殑浠绘剰涓€涓矾寰勩€傛柊鐨勬枃浠剁郴缁烝PI鍏煎鑰佺殑鐗堟湰锛屽苟涓旀彁渚涗簡鍑犱釜 闈炲父瀹炵敤鐨勬柟娉曪紝鍙互鐢ㄦ潵妫€鏌ワ紝鍒犻櫎锛屾嫹璐濆拰绉诲姩鏂囦欢銆傛瘮濡傦紝浣犲彲浠ュ湪Java涓垽鏂竴涓枃浠舵槸鍚︽槸闅愯棌鏂囦欢銆備綘杩樺彲浠ュ湪Java涓垱寤鸿蒋閾炬帴鍜岀‖閾炬帴銆侸DK 7鐨勬柊鐨勬枃浠禔PI杩樿兘澶熶娇鐢ㄩ€氶厤绗︽潵杩涜鏂囦欢鐨勬悳绱€備綘杩樺彲浠ョ敤瀹冩潵鐩戞祴鏌愪釜鐩綍 鏄惁鏈夊彉鍔ㄣ€傛垜鎺ㄨ崘浣犵湅涓嬪畠鐨勫畼鏂规枃妗f潵浜嗚В鏇村鐨勪竴浜涙湁鎰忔€濈殑鐗规€с€?
9. G1鍨冨溇鍥炴敹鍣?
JDK7涓紩鍏ヤ簡涓€涓柊鐨勫瀮鍦惧洖鏀跺櫒锛孏1锛屽畠鏄疓arbage First鐨勭缉鍐欍€侴1鍥炴敹鍣ㄤ紭鍏堝洖鏀跺瀮鍦炬渶澶氱殑鍖哄煙銆備负浜嗗疄鐜拌繖涓瓥鐣ュ畠鎶婂爢鍒嗘垚浜嗗涓尯鍩燂紝灏卞ソ姣擩ava 7涔嬪墠鍒嗘垚涓変釜鍖哄煙閭f牱锛堟柊鐢熶唬锛岃€佺敓浠e拰鎸佷箙浠o級銆侴1鍥炴敹鍣ㄦ槸涓€涓彲棰勬祴鐨勫洖鏀跺櫒锛屽悓鏃跺閭d簺鍐呭瓨瀵嗛泦鍨嬬殑绋嬪簭瀹冭繕鑳戒繚璇佽緝楂樼殑鍚炲悙閲忋€?
10. 閲嶆姏寮傚父鐨勬敼杩?
Java SE 7鐨勭紪璇戝櫒鍜屼箣鍓嶇殑鐗堟湰鐩告瘮锛屽湪閲嶆柊鎶涘嚭寮傚父杩欏潡杩涜浜嗘洿绮剧‘鐨勫垎鏋愩€傝繖浣垮緱浣犲湪鏂规硶澹版槑鐨則hrows瀛愬彞涓彲浠ユ寚瀹氭洿绮剧‘鐨勫紓甯哥被鍨嬨€傚湪JDK 7涔嬪墠锛岄噸鎶涚殑寮傚父鐨勭被鍨嬭璁や负鏄痗atch鍙傛暟涓殑鎸囧畾鐨勫紓甯哥被鍨嬨€傛瘮濡傝锛屽鏋滀綘鐨則ry鍧椾腑鎶涘嚭浜嗕竴涓狿arseException浠ュ強涓€涓狪OException锛屼负浜嗘崟鑾锋墍鏈夌殑寮傚父锛岀劧鍚庨噸鏂版姏鍑烘潵锛屼綘浼氬幓鎹曡幏Exception绫诲瀷鐨勫紓甯革紝骞朵笖澹版槑浣犵殑鏂规硶鎶涘嚭鐨勫紓甯哥被鍨嬫槸Exception銆傝繖绉嶆柟寮忔湁鐐逛笉澶簿纭紝鍥犱负浣犲疄闄呮姏鍑虹殑鏄竴涓€氱敤鐨凟xception绫诲瀷锛岃€岃皟鐢ㄤ綘鐨勬柟娉曠殑璇彞闇€瑕佸幓鎹曡幏杩欎釜閫氱敤鐨勫紓甯搞€傜湅涓€涓婮ava 1.7鍓嶇殑杩欐寮傚父澶勭悊鐨勪唬鐮佸彲鑳戒綘浼氭洿鏄庣櫧浜涳細
JDK 7浠ュ悗浣犲氨鍙互鍦ㄦ柟娉曠殑throws瀛愬彞涓槑纭殑鎸囧畾寮傚父绫诲瀷浜嗐€傜簿纭殑寮傚父閲嶆姏鎸囩殑鏄紝濡傛灉浣犲湪catch鍧椾腑閲嶆柊鎶涘嚭寮傚父锛屽疄闄呯湡姝f姏鍑虹殑寮傚父绫诲瀷浼氭槸锛?
1. 浣犵殑try鍧楁姏鍑虹殑寮傚父
2. 杩樻病鏈夎鍓嶉潰鐨刢atch鍧楀鐞嗚繃锛屽苟涓?
3. catch鐨勫弬鏁扮被鍨嬫槸Exception鐨勬煇涓瓙绫汇€?
杩欎娇寰楀紓甯搁噸鎶涘彉寰楁洿绮剧‘銆備綘鍙互鏇村噯纭殑鐭ラ亾鏂规硶鎶涘嚭鐨勬槸浣曠寮傚父锛屽洜姝や綘鍙互鏇村ソ鐨勫鐞嗗畠浠紝灏卞儚涓嬮潰杩欐浠g爜杩欐牱锛?
Java SE 7鐨勭紪璇戝櫒鍏佽浣犲湪preciese() 鏂规硶澹版槑鐨則hrows瀛愬彞涓寚瀹歅arseException鍜孖OException绫诲瀷锛岃繖鏄洜涓轰綘鎶涘嚭鐨勫紓甯告槸澹版槑鐨勮繖浜涘紓甯哥被鍨嬬殑鐖剁被锛屾瘮濡傝繖閲屾垜浠姏鍑虹殑鏄痡ava.lang.Exception锛屽畠鏄墍鏈夊彈妫€鏌ュ紓甯哥殑鐖剁被銆傛湁鐨勫湴鏂逛綘浼氱湅鍒癱atch鍙傛暟涓甫final鍏抽敭瀛楋紝涓嶈繃杩欎釜涓嶅啀鏄己鍒剁殑浜嗐€?
杩欎簺灏辨槸JDK 7涓墍鏈変綘搴旇鍥為【鐨勫唴瀹逛簡銆傝繖浜涙柊鐗规€у鍐欏嚭鏁存磥鐨勪唬鐮佷互鍙婃彁鍗囧紑鍙戞晥鐜囬潪甯告湁鐢ㄣ€傛湁浜咼ava 8涓殑lambda琛ㄨ揪寮忥紝Java涓殑浠g爜鏁存磥涔嬮亾鍒欏張涓婁簡涓€涓柊鐨勯噷绋嬬銆傚鏋滀綘璁や负鎴戣繖绡囨枃绔犱腑婕忔帀浜咼ava 1.7浠讳綍鏈夌敤鐨勭壒鎬э紝璇疯寰楁彁閱掓垜銆?
P.S. 濡傛灉浣犲枩娆㈣涔︾殑璇濓紝閭d綘涔熶竴瀹氫細鍠滄Packet Publication鐨勮繖鏈琠Java 7 New features Cookbook_銆?
鍘熷垱鏂囩珷杞浇璇锋敞鏄庡嚭澶勶細http://it.deepinmind.com
鑻辨枃鍘熸枃閾炬帴
鍡紝鏄殑锛屾爣棰橀偅鍧楁湁璇€傝阿璋㈡彁閱掑搱
璇戞敞锛氫絾瑙佹柊浜虹瑧锛屽摢闂绘棫浜哄摥銆傚湪澶у閮藉湪鍏磋嚧鍕冨媰鐨勮璁篔ava 8鐨勬椂鍊欙紝閭d釜鏃╄閬楀繕鐨凧ava 7锛屾垨璁镐綘浠庢潵閮芥病鏈夎寰楀畠鐨勫ソ銆?
Java 8鐨勫彂甯冧篃鏈変竴涓湀浜嗭紝鎴戠浉淇$幇鍦ㄥぇ瀹堕兘鍦ㄦ帰绱DK 8涓殑鏂扮壒鎬с€備絾鏄紝鍦ㄤ綘褰诲簳寮€濮嬮捇鐮擩ava 8涔嬪墠锛屾渶濂藉厛鏉ュ洖椤句笅Java 7鏈夊摢浜涙柊鐗规€с€傚鏋滀綘杩樿寰楃殑璇濓紝Java 6鏄病鏈夊鍔犱换浣曠壒鎬х殑锛屽彧鏄疛VM鐨勪竴浜涙敼鍔ㄤ互鍙婃€ц兘鐨勬彁鍗囷紝涓嶈繃JDK 7鍊掓槸澧炲姞浜嗕笉灏戞湁鍔╀簬鎻愬崌寮€鍙戞晥鐜囩殑寰堢粰鍔涚殑鐗规€с€傛垜鐜板湪鍐欒繖绡囨枃绔犵殑鐩殑鏄粈涔堝憿锛熶负浠€涔堝埆浜洪兘鍦ㄨ璁篔ava 8鐨勬椂鍊欙紝鎴戝嵈杩樺湪鑱奐ava1.7鐨勪簨锛熷洜涓烘垜璁や负骞朵笉鏄墍鏈夌殑Java寮€鍙戜汉鍛橀兘寰堟竻妤欽DK 7涓殑鏀瑰姩锛岃繕鏈変粈涔堟椂鍊欐瘮鏂扮増鏈彂甯冪殑鏃跺€欐洿閫傚悎浠嬬粛涓婁竴鐗堟湰鐨勭壒鎬х殑鍛紵鎴戣繕寰堝皯鐪嬭鏈夊紑鍙戜汉鍛樺湪浠g爜涓娇鐢ㄨ嚜鍔ㄨ祫婧愮鐞嗭紙ARM锛夛紝灏界IDE鐨勮緟鍔╁伐鍏烽兘宸茬粡鏀寔杩欎釜鐗规€т簡銆備笉杩囩‘瀹炵湅鍒版湁浜哄湪鐢╯tring鐨剆witch鍔熻兘浠ュ強<>鍦ㄥ仛绫诲瀷鎺ㄥ锛屽彟澶栵紝涔熷緢灏戞湁浜虹煡閬揻ork-join妗嗘灦锛屾垨鑰呭湪涓€涓猚atch鍧楅噷鎹曡幏澶氫釜寮傚父锛屾垨鑰呭湪鏁板€煎瀷瀛楅潰閲忎腑浣跨敤涓嬪垝绾裤€傚洜姝ゆ垜鍊熻繖涓満浼氭潵鍐欎竴绡囩畝鐭殑鎽樿锛屽洖椤句竴涓嬭繖浜涜兘鏂逛究鎴戜滑鏃ュ父寮€鍙戝伐浣滅殑鏀瑰姩銆侼IO浠ュ強鏂扮殑鏂囦欢鎺ュ彛锛岃繕鏈夊緢澶欰PI灞傞潰鐨勬敼鍔ㄤ篃鍚屾牱鍊煎緱鍏虫敞銆傛垜鐩镐俊鍜孞ava 8鐨刲ambda琛ㄨ揪寮忕粨鍚堣捣鏉ュ悗锛屽啓鍑烘潵鐨勪唬鐮佽偗瀹氫細鏇村姞绠€娲併€?
1. 绫诲瀷鎺ㄥ
JDK 1.7寮曞叆涓€涓柊鐨勬搷浣滅<>锛屼篃琚О浣滈捇鐭虫搷浣滅锛屽畠浣垮緱鏋勯€犳柟娉曚篃鍙互杩涜绫诲瀷鎺ㄥ 銆傚湪Java 7涔嬪墠锛岀被鍨嬫帹瀵煎彧瀵规柟娉曞彲鐢紝姝eJoshua Bloch鍦╛Effiective Java_绗簩鐗堜腑鎵€棰勮█ 鐨勯偅鏍凤紝鐜板湪缁堜簬鍦ㄦ瀯閫犳柟娉曚腑瀹炵幇浜嗐€傚湪杩欎箣鍓嶏紝浣犲緱鍦ㄥ璞″垱寤鸿〃杈惧紡鐨勫乏鍙充袱杈瑰悓鏃舵寚瀹氱被鍨嬶紝鐜板湪浣犲彧闇€瑕佸湪宸﹁竟鎸囧畾灏卞彲浠ヤ簡锛屽氨鍍忎笅闈㈣繖鏍枫€?
JDK 7涔嬪墠
Map<String, List<String>> employeeRecords = new HashMap<String, List<String>>(); List<Integer> primes = new ArrayList<Integer>();
JDK 7
Map<String, List<String>> employeeRecords = new HashMap<>(); List<Integer> primes = new ArrayList<>();
鍦↗ava 7涓彲浠ュ皯鏁蹭簺浠g爜浜嗭紝灏ゅ叾鏄湪浣跨敤闆嗗悎鐨勬椂鍊欙紝鍥犱负閭i噷澶ч噺鐢ㄥ埌浜嗘硾鍨嬨€傜偣鍑昏繖閲屼簡瑙f洿澶氬叧浜嶫ava閽荤煶鎿嶄綔绗︾殑淇℃伅銆傦紙璇戞敞锛氬師鏂囨病鎻愪緵閾炬帴鍟婏級
2. 鍦╯witch涓敮鎸丼tring
鍦↗DK 7涔嬪墠 锛屽彧鏈夋暣鍨嬫墠鑳界敤浣渟witch-case璇彞鐨勯€夋嫨鍥犲瓙銆傚湪JDK7涓紝浣犲彲浠ュ皢String鐢ㄤ綔閫夋嫨鍥犲瓙浜嗐€傛瘮濡傦細
String state = "NEW"; switch (day) { case "NEW": System.out.println("Order is in NEW state"); break; case "CANCELED": System.out.println("Order is Cancelled"); break; case "REPLACE": System.out.println("Order is replaced successfully"); break; case "FILLED": System.out.println("Order is filled"); break; default: System.out.println("Invalid"); }
姣旇緝鐨勬椂鍊欎細鐢ㄥ埌String鐨別quals鍜宧ashCode()鏂规硶锛屽洜姝よ繖涓瘮杈冩槸澶у皬鍐欐晱鎰熺殑銆傚湪switch涓娇鐢⊿tring鐨勫ソ澶勬槸锛屽拰鐩存帴鐢╥f-else鐩告瘮 锛岀紪璇戝櫒鍙互鐢熸垚鏇撮珮鏁堢殑浠g爜銆傛洿璇︾粏鐨勮鏄庤鐐瑰嚮杩欓噷銆?
3. 鑷姩璧勬簮绠$悊锛圓utomatic Resource Management锛?
鍦↗DK 7涔嬪墠锛屾垜浠渶瑕佷娇鐢ㄤ竴涓猣inally鍧楋紝鏉ョ‘淇濊祫婧愮‘瀹炶閲婃斁鎺夛紝涓嶇try鍧楁槸瀹屾垚浜嗚繕鏄腑鏂簡銆傛瘮濡傝璇诲彇鏂囦欢鎴栬€呰緭鍏ユ祦鐨勬椂鍊欙紝鎴戜滑闇€瑕佸湪finally鍧椾腑鍏抽棴瀹冧滑锛岃繖鏍蜂細瀵艰嚧寰堝鐨勬牱鏉夸唬鐮侊紝灏卞儚涓嬮潰杩欐牱锛?
public static void main(String args[]) { FileInputStream fin = null; BufferedReader br = null; try { fin = new FileInputStream("info.xml"); br = new BufferedReader(new InputStreamReader(fin)); if (br.ready()) { String line1 = br.readLine(); 09 System.out.println(line1); } } catch (FileNotFoundException ex) { System.out.println("Info.xml is not found"); } catch (IOException ex) { System.out.println("Can't read the file"); } finally { try { if (fin != null) fin.close(); if (br != null) br.close(); } catch (IOException ie) { System.out.println("Failed to close files"); } } }
鐪嬩笅杩欐浠g爜 锛屾槸涓嶆槸寰堝鏍锋澘浠g爜锛?
鑰屽湪Java 7閲岄潰锛屼綘鍙互浣跨敤try-with-resource鐨勭壒鎬ф潵鑷姩鍏抽棴璧勬簮锛屽彧瑕佹槸瀹炵幇浜咥utoClosable鍜孋loaeable鎺ュ彛鐨勯兘鍙互锛孲tream, File, Socket锛屾暟鎹簱杩炴帴绛夐兘宸茬粡瀹炵幇浜嗐€侸DK 7寮曞叆浜唗ry-with-resource璇彞锛屾潵纭繚姣忎釜璧勬簮鍦ㄨ鍙ョ粨鏉熷悗閮戒細璋冪敤AutoCLosable鎺ュ彛鐨刢lose()鏂规硶杩涜鍏抽棴銆備笅闈㈡槸Java 7涓殑涓€娈电ず渚嬩唬鐮侊紝瀹冪湅璧锋潵鍙槸绠€娲佸浜嗭細
public static void main(String args[]) { try (FileInputStream fin = new FileInputStream("info.xml"); BufferedReader br = new BufferedReader(new InputStreamReader(fin));) { if (br.ready()) { String line1 = br.readLine(); System.out.println(line1); } } catch (FileNotFoundException ex) { System.out.println("Info.xml is not found"); } catch (IOException ex) { System.out.println("Can't read the file"); } }
鐢变簬Java璐熻矗鍏抽棴閭d簺鎵撳紑鐨勮祫婧愭瘮濡傛枃浠跺拰娴佽繖绉嶏紝鍥犳鏂囦欢鎻忚堪绗︽硠闇茬殑浜嬫儏搴旇涓嶄細鍐嶅彂鐢熶簡锛屽簲璇ヤ篃涓嶄細鍐嶇湅鍒版枃浠舵弿杩扮閿欒鐨勬彁绀轰簡銆傜敋鑷矹DBC 4.1閮藉凡缁忓紑濮嬫敮鎸佷簡AutoClosable浜嗐€?
4. Fork Join妗嗘灦
Fork/join妗嗘灦鏄疎xecutorService鎺ュ彛鐨勫疄鐜帮紝瀹冧娇寰椾綘鍙互鍏呭垎鍒╃敤鐜颁唬鏈嶅姟鍣ㄥ澶勭悊鍣ㄥ甫鏉ョ殑濂藉銆傝繖涓鏋舵槸涓轰簡閭d簺鑳介€掑綊鍦版媶鍒嗘垚鏇村皬浠诲姟鐨勫伐浣滆€岃璁$殑銆傚畠鐨勭洰鏍囨槸鍘诲帇姒ㄥ鐞嗗櫒鐨勮兘鍔涗互鎻愬崌绋嬪簭鐨勬€ц兘銆傚氨鍍忓埆鐨凟xecutorService鐨勫疄鐜颁竴鏍凤紝fork/join妗嗘灦涔熸槸鎶婁换鍔″垎鍙戠粰绾跨▼姹犱腑鐨勫涓嚎绋嬨€傚畠鐨勪笉鍚屼箣澶勫湪浜庡畠浣跨敤鐨勬槸涓€绉嶅伐浣滅獌鍙栫畻娉曪紙work-stealing algorithm锛夛紝杩欏拰鐢熶骇鑰呮秷璐硅€呯殑绠楁硶鏈夊緢澶х殑涓嶅悓銆傚凡缁忓鐞嗗畬浠诲姟鐨勫伐浣滅嚎绋嬪彲浠ヤ粠鍒殑绻佸繖鐨勭嚎绋嬮偅閲岀獌鍙栦竴浜涗换鍔℃潵鎵ц銆俧ork/join妗嗘灦鐨勬牳蹇冩槸ForkJoinPool绫伙紝瀹冪户鎵胯嚜AbstractExecutorService銆侳orkJoinPool绫诲疄鐜颁簡鏍稿績鐨勫伐浣滅獌鍙栫畻娉曪紝鍙互鎵цForkJoinTask杩涚▼銆備綘鍙互鎶婁唬鐮佸皝瑁呭湪涓€涓狥orkJoinTask鐨勫瓙绫婚噷锛屾瘮濡俁ecursiveTask鎴栬€匯ecursiveAction銆傛洿澶氫俊鎭氨鍙傝€?a target="_blank" href="http://javarevisited.blogspot.com/2011/09/fork-join-task-java7-tutorial.html">杩欓噷銆?
5. 鏁板€煎瓧闈㈤噺涓娇鐢ㄤ笅鍒掔嚎
JDK 7涓紝浣犲彲浠ュ湪鏁板€煎瓧闈㈤噺涓娇鐢?_'鏉ユ彁鍗囧彲璇绘€с€傝繖瀵瑰湪婧愪唬鐮佷腑浣跨敤浜嗗ぇ鏁板瓧鐨勪汉鏉ヨ灏ゅ叾鏈夌敤锛屼緥濡傚湪閲戣瀺鎴栬€呰绠楅鍩熶腑銆傛瘮鏂硅杩欎箞鍐欙紝
int billion = 1_000_000_000; // 10^9 long creditCardNumber = 1234_4567_8901_2345L; //16 digit number long ssn = 777_99_8888L; double pi = 3.1415_9265; float pif = 3.14_15_92_65f;
浣犲彲浠ュ湪鍚堥€傜殑浣嶇疆鎻掑叆涓嬪垝绾夸娇寰楀畠鍙鎬ф洿寮猴紝姣斿璇翠竴涓緢澶х殑鏁板瓧鍙互姣忛殧涓変綅鏀句竴涓笅鍒掔嚎锛屽浜庝俊鐢ㄥ崱鍗″彿鑰岃█锛岄€氬父鏄?6浣嶉暱搴︼紝浣犲彲浠ユ瘡闅?涓暟瀛楀氨鏀句竴涓笅鍒掔嚎锛屽氨濡傚畠浠湪鍗$墖涓婃墍鏄剧ず鐨勯偅鏍枫€傞『渚胯涓€鍙ワ紝瑕佽浣忥紝浣犱笉鑳藉湪灏忔暟鍚庨潰锛屾垨鑰呮暟瀛楃殑寮€濮嬪拰缁撴潫鐨勫湴鏂规斁涓嬪垝绾裤€傛瘮濡傝锛屼笅闈㈢殑鏁板€煎瓧闈㈤噺灏辨槸涓嶆纭殑锛屽洜涓哄畠浠敊璇湴浣跨敤浜嗕笅鍒掔嚎锛?
double pi = 3._1415_9265; // underscore just after decimal point long creditcardNum = 1234_4567_8901_2345_L; //underscore at the end of number long ssn = _777_99_8888L; //undersocre at the beginning
浣犲彲浠ヨ涓嬫垜鐨?a target="_blank" href="http://javarevisited.blogspot.sg/2014/03/why-use-underscore-in-numbers-from-java-SE-7-numeric-literals.html">杩欑瘒鏂囩珷浜嗚В鏇村鐨勪竴浜涘叧浜庝笅鍒掔嚎浣跨敤鐨勪緥瀛愩€?
6. 鍦ㄤ竴涓猚atch鍧椾腑鎹曡幏澶氫釜寮傚父
JDK 7涓紝鍗曚釜catch鍧楀彲浠ュ鐞嗗涓紓甯哥被鍨嬨€?
姣斿璇村湪JDK 7涔嬪墠锛屽鏋滀綘鎯虫崟鑾蜂袱绉嶇被鍨嬬殑寮傚父浣犲緱闇€瑕佷袱涓猚atch鍧楋紝灏界涓や釜鐨勫鐞嗛€昏緫閮芥槸涓€鏍风殑锛?
try { ...... } catch(ClassNotFoundException ex) { ex.printStackTrace(); } catch(SQLException ex) { ex.printStackTrace(); }
鑰屽湪JDK 7涓紝浣犲彧椤讳娇鐢ㄤ竴涓猚atch鍧楀氨鎼炲畾浜嗭紝寮傚父绫诲瀷鐢ㄢ€榺鈥欒繘琛屽垎闅旓細
try { ...... } catch(ClassNotFoundException|SQLException ex) { ex.printStackTrace(); }
椤轰究璇翠竴鍙ワ紝杩欑鐢ㄦ硶鏄笉鍖呮嫭寮傚父鐨勫瓙绫诲瀷鐨勩€傛瘮濡傝锛屼笅闈㈣繖涓涓紓甯哥殑鎹曡幏璇彞灏变細鎶涘嚭缂栬瘧閿欒锛?
try { ...... } catch (FileNotFoundException | IOException ex) { ex.printStackTrace(); }
杩欐槸鍥犱负FileNotFoundException鏄疘OException 鐨勫瓙绫伙紝鍦ㄧ紪璇戠殑鏃跺€欎細鎶涘嚭涓嬮潰鐨勯敊璇細
java.io.FileNotFoundException is a subclass of alternative java.io.IOException
at Test.main(Test.java:18)銆?
浜嗚В鏇村璇风偣鍑?a target="_blank" href="http://java67.blogspot.sg/2013/01/java-7-improved-exception-handling-multiple-catch-block.html">杩欓噷銆?
7. 浣跨敤"0b"鍓嶇紑鐨勪簩杩涘埗瀛楅潰閲?
JDK7涓紝瀵逛簬鏁村瀷绫诲瀷锛坆yte, short, int 鍜宭ong)鏉ヨ锛屼綘鍙互鐢?0b'鍓嶇紑鏉ヨ〃鏄庤繖鏄竴涓簩杩涘埗鐨勫瓧闈㈤噺锛屽氨鍍廋/C++涓偅鏍枫€傚湪杩欎箣鍓嶏紝浣犲彧鑳戒娇鐢?杩涘埗锛堝墠缂€'0'锛夋垨鑰?6杩涘埗锛堝墠缂€鏄?0x'鎴栬€呪€?X'锛夌殑瀛楅潰閲忋€?
int mask = 0b01010000101;
杩欐牱鍐欏ソ澶勬洿鏄庢樉锛?
int binary = 0B0101_0000_1010_0010_1101_0000_1010_0010;
8.Java NIO 2
Java SE 7涓紩鍏ヤ簡java.nio.file鍖咃紝浠ュ強鐩稿叧鐨刯ava.nio.file.attibute鍖咃紝鍏ㄩ潰鏀寔浜嗘枃浠禝O浠ュ強瀵归粯璁ゆ枃浠剁郴缁熺殑璁块棶銆傚畠鍚屾椂杩樺紩鍏ヤ簡Path 绫伙紝浣犲彲浠ョ敤瀹冩潵浠h〃鎿嶄綔绯荤粺涓殑浠绘剰涓€涓矾寰勩€傛柊鐨勬枃浠剁郴缁烝PI鍏煎鑰佺殑鐗堟湰锛屽苟涓旀彁渚涗簡鍑犱釜 闈炲父瀹炵敤鐨勬柟娉曪紝鍙互鐢ㄦ潵妫€鏌ワ紝鍒犻櫎锛屾嫹璐濆拰绉诲姩鏂囦欢銆傛瘮濡傦紝浣犲彲浠ュ湪Java涓垽鏂竴涓枃浠舵槸鍚︽槸闅愯棌鏂囦欢銆備綘杩樺彲浠ュ湪Java涓垱寤鸿蒋閾炬帴鍜岀‖閾炬帴銆侸DK 7鐨勬柊鐨勬枃浠禔PI杩樿兘澶熶娇鐢ㄩ€氶厤绗︽潵杩涜鏂囦欢鐨勬悳绱€備綘杩樺彲浠ョ敤瀹冩潵鐩戞祴鏌愪釜鐩綍 鏄惁鏈夊彉鍔ㄣ€傛垜鎺ㄨ崘浣犵湅涓嬪畠鐨勫畼鏂规枃妗f潵浜嗚В鏇村鐨勪竴浜涙湁鎰忔€濈殑鐗规€с€?
9. G1鍨冨溇鍥炴敹鍣?
JDK7涓紩鍏ヤ簡涓€涓柊鐨勫瀮鍦惧洖鏀跺櫒锛孏1锛屽畠鏄疓arbage First鐨勭缉鍐欍€侴1鍥炴敹鍣ㄤ紭鍏堝洖鏀跺瀮鍦炬渶澶氱殑鍖哄煙銆備负浜嗗疄鐜拌繖涓瓥鐣ュ畠鎶婂爢鍒嗘垚浜嗗涓尯鍩燂紝灏卞ソ姣擩ava 7涔嬪墠鍒嗘垚涓変釜鍖哄煙閭f牱锛堟柊鐢熶唬锛岃€佺敓浠e拰鎸佷箙浠o級銆侴1鍥炴敹鍣ㄦ槸涓€涓彲棰勬祴鐨勫洖鏀跺櫒锛屽悓鏃跺閭d簺鍐呭瓨瀵嗛泦鍨嬬殑绋嬪簭瀹冭繕鑳戒繚璇佽緝楂樼殑鍚炲悙閲忋€?
10. 閲嶆姏寮傚父鐨勬敼杩?
Java SE 7鐨勭紪璇戝櫒鍜屼箣鍓嶇殑鐗堟湰鐩告瘮锛屽湪閲嶆柊鎶涘嚭寮傚父杩欏潡杩涜浜嗘洿绮剧‘鐨勫垎鏋愩€傝繖浣垮緱浣犲湪鏂规硶澹版槑鐨則hrows瀛愬彞涓彲浠ユ寚瀹氭洿绮剧‘鐨勫紓甯哥被鍨嬨€傚湪JDK 7涔嬪墠锛岄噸鎶涚殑寮傚父鐨勭被鍨嬭璁や负鏄痗atch鍙傛暟涓殑鎸囧畾鐨勫紓甯哥被鍨嬨€傛瘮濡傝锛屽鏋滀綘鐨則ry鍧椾腑鎶涘嚭浜嗕竴涓狿arseException浠ュ強涓€涓狪OException锛屼负浜嗘崟鑾锋墍鏈夌殑寮傚父锛岀劧鍚庨噸鏂版姏鍑烘潵锛屼綘浼氬幓鎹曡幏Exception绫诲瀷鐨勫紓甯革紝骞朵笖澹版槑浣犵殑鏂规硶鎶涘嚭鐨勫紓甯哥被鍨嬫槸Exception銆傝繖绉嶆柟寮忔湁鐐逛笉澶簿纭紝鍥犱负浣犲疄闄呮姏鍑虹殑鏄竴涓€氱敤鐨凟xception绫诲瀷锛岃€岃皟鐢ㄤ綘鐨勬柟娉曠殑璇彞闇€瑕佸幓鎹曡幏杩欎釜閫氱敤鐨勫紓甯搞€傜湅涓€涓婮ava 1.7鍓嶇殑杩欐寮傚父澶勭悊鐨勪唬鐮佸彲鑳戒綘浼氭洿鏄庣櫧浜涳細
public void obscure() throws Exception{ try { new FileInputStream("abc.txt").read(); new SimpleDateFormat("ddMMyyyy").parse("12-03-2014"); } catch (Exception ex) { System.out.println("Caught exception: " + ex.getMessage()); throw ex; } }
JDK 7浠ュ悗浣犲氨鍙互鍦ㄦ柟娉曠殑throws瀛愬彞涓槑纭殑鎸囧畾寮傚父绫诲瀷浜嗐€傜簿纭殑寮傚父閲嶆姏鎸囩殑鏄紝濡傛灉浣犲湪catch鍧椾腑閲嶆柊鎶涘嚭寮傚父锛屽疄闄呯湡姝f姏鍑虹殑寮傚父绫诲瀷浼氭槸锛?
1. 浣犵殑try鍧楁姏鍑虹殑寮傚父
2. 杩樻病鏈夎鍓嶉潰鐨刢atch鍧楀鐞嗚繃锛屽苟涓?
3. catch鐨勫弬鏁扮被鍨嬫槸Exception鐨勬煇涓瓙绫汇€?
杩欎娇寰楀紓甯搁噸鎶涘彉寰楁洿绮剧‘銆備綘鍙互鏇村噯纭殑鐭ラ亾鏂规硶鎶涘嚭鐨勬槸浣曠寮傚父锛屽洜姝や綘鍙互鏇村ソ鐨勫鐞嗗畠浠紝灏卞儚涓嬮潰杩欐浠g爜杩欐牱锛?
public void precise() throws ParseException, IOException { try { new FileInputStream("abc.txt").read(); new SimpleDateFormat("ddMMyyyy").parse("12-03-2014"); } catch (Exception ex) { System.out.println("Caught exception: " + ex.getMessage()); throw ex; } }
Java SE 7鐨勭紪璇戝櫒鍏佽浣犲湪preciese() 鏂规硶澹版槑鐨則hrows瀛愬彞涓寚瀹歅arseException鍜孖OException绫诲瀷锛岃繖鏄洜涓轰綘鎶涘嚭鐨勫紓甯告槸澹版槑鐨勮繖浜涘紓甯哥被鍨嬬殑鐖剁被锛屾瘮濡傝繖閲屾垜浠姏鍑虹殑鏄痡ava.lang.Exception锛屽畠鏄墍鏈夊彈妫€鏌ュ紓甯哥殑鐖剁被銆傛湁鐨勫湴鏂逛綘浼氱湅鍒癱atch鍙傛暟涓甫final鍏抽敭瀛楋紝涓嶈繃杩欎釜涓嶅啀鏄己鍒剁殑浜嗐€?
杩欎簺灏辨槸JDK 7涓墍鏈変綘搴旇鍥為【鐨勫唴瀹逛簡銆傝繖浜涙柊鐗规€у鍐欏嚭鏁存磥鐨勪唬鐮佷互鍙婃彁鍗囧紑鍙戞晥鐜囬潪甯告湁鐢ㄣ€傛湁浜咼ava 8涓殑lambda琛ㄨ揪寮忥紝Java涓殑浠g爜鏁存磥涔嬮亾鍒欏張涓婁簡涓€涓柊鐨勯噷绋嬬銆傚鏋滀綘璁や负鎴戣繖绡囨枃绔犱腑婕忔帀浜咼ava 1.7浠讳綍鏈夌敤鐨勭壒鎬э紝璇疯寰楁彁閱掓垜銆?
P.S. 濡傛灉浣犲枩娆㈣涔︾殑璇濓紝閭d綘涔熶竴瀹氫細鍠滄Packet Publication鐨勮繖鏈琠Java 7 New features Cookbook_銆?
鍘熷垱鏂囩珷杞浇璇锋敞鏄庡嚭澶勶細http://it.deepinmind.com
鑻辨枃鍘熸枃閾炬帴
1 妤? yixiandave
鏄ㄥぉ
浜岃繘鍒跺瓧闈㈤噺鍓嶇紑鏄?b鑰屼笉鏄痮b銆傘€傘€傛槸鏁板瓧0
2 妤? test_lockxxx
鏄ㄥぉ
java 7锛屽鍔犱簡寮傛IO鐨勬敮鎸侊紝 鍦?windows 鏈嶅姟鍣ㄤ笂锛岄潪甯哥殑鏈夌敤銆?/div>
3 妤? beyondcj
鏄ㄥぉ
澶氳阿鍒嗕韩锛侊紒
4 妤? deepinmind
鏄ㄥぉ
yixiandave 鍐欓亾
浜岃繘鍒跺瓧闈㈤噺鍓嶇紑鏄?b鑰屼笉鏄痮b銆傘€傘€傛槸鏁板瓧0
鍡紝鏄殑锛屾爣棰橀偅鍧楁湁璇€傝阿璋㈡彁閱掑搱
5 妤? kuchaguangjie
15 灏忔椂鍓?nbsp;
java 鐜板湪瓒婃潵瓒婅蛋鏍蜂簡,
6 妤? teasp
5 灏忔椂鍓?nbsp;
澶氳阿鍒嗕韩銆?/div>
7 妤? yanghuoche
7 鍒嗛挓鍓?nbsp;
鏈夌偣鐢紝涓嶈繃鏈変簺鐪嬩笉鎳?/div>
8 妤? yanghuoche
6 鍒嗛挓鍓?nbsp;
- 1【编程直播】回约吗
- 2内核编译之ACPI异常,ACPI: [Package] has zero elements
- 3【Coder Force】#360B - Levko and Array(DP 2分枚举)
- 4一路编程题实在是不知道哪个地方错了
- 5【编程直播】回约吗
- 6内核编译之ACPI异常,ACPI: [Package] has zero elements
- 7内核编译之ACPI异常,ACPI: [Package] has zero elements
- 8内核编译之ACPI异常,ACPI: [Package] has zero elements
- 9莫队算法总结(Markdown版)
- 10Java札记二十二.深入解析I/O编程之包装类
文章评论
相关解决方案