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涔嬪墠锛岀被鍨嬫帹瀵煎彧瀵规柟娉曞彲鐢紝姝eJoshua 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 鏄ㄥぉ  
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚 澶氳阿鍒嗕韩锛侊紒
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; 
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚

文章评论

Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
程序员最害怕的5件事 你中招了吗?
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
5款最佳正则表达式编辑调试器
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
程序员都该阅读的书
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
旅行,写作,编程
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
代码女神横空出世
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
写给自己也写给你 自己到底该何去何从
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
如何成为一名黑客
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
什么才是优秀的用户界面设计
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
为什么程序员都是夜猫子
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
Web开发者需具备的8个好习惯
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
做程序猿的老婆应该注意的一些事情
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
10个帮程序员减压放松的网站
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
为啥Android手机总会越用越慢?
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
一个程序员的时间管理
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
程序员和编码员之间的区别
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
亲爱的项目经理,我恨你
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
漫画:程序员的工作
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
那些争议最大的编程观点
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
程序员的样子
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
聊聊HTTPS和SSL/TLS协议
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
当下全球最炙手可热的八位少年创业者
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
程序员的鄙视链
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
每天工作4小时的程序员
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
程序员眼里IE浏览器是什么样的
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
要嫁就嫁程序猿—钱多话少死的早
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
Java程序员必看电影
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
程序员周末都喜欢做什么?
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
“肮脏的”IT工作排行榜
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
科技史上最臭名昭著的13大罪犯
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
中美印日四国程序员比较
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
“懒”出效率是程序员的美德
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
不懂技术不要对懂技术的人说这很容易实现
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
我是如何打败拖延症的
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
初级 vs 高级开发者 哪个性价比更高?
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
看13位CEO、创始人和高管如何提高工作效率
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
老程序员的下场
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
程序员必看的十大电影
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
60个开发者不容错过的免费资源库
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
程序员的一天:一寸光阴一寸金
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
我跳槽是因为他们的显示器更大
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
Web开发人员为什么越来越懒了?
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
Java 与 .NET 的平台发展之争
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
总结2014中国互联网十大段子
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
编程语言是女人
Java 八?杩樿寰楅偅骞村ぇ鏄庢箹鐣旂殑Java 7鍚
我的丈夫是个程序员