[C風格格式化輸出]
Java總算也有類似C的printf()風格的方法了方法名同樣叫作printf()這一特性依賴於前邊提到的可變長度參數舉個例子來說我們現在可以寫
Systemoutprintf(%s has a value of %d%n someString a);
怎麼樣看上去還不錯吧?需要注意的是Java為了支持多平台新增了%n標示符作為對\n的補充有關Java格式化輸出的具體語法請參考javautilFormatter的API文檔
[增強的for循環]
你是否已經厭倦了每次寫for循環時都要寫上那些機械的代碼尤其當你需要遍歷數組或者Collection如(假設在Collection中儲存的對象是String類型的)
public void showAll (Collection c) {
for (Iterator iter = erator(); iterhasNext(); ) {
Systemoutprintln((String) iternext());
}
}
public void showAll (String[] sa) {
for (int i = ; i < salength; i++) {
Systemoutprintln(sa[i]);
}
}
這樣的代碼不僅顯得臃腫而且容易出錯我想我們大家在剛開始接觸編程時尤其是C/C++和Java可能多少都犯過以下類似錯誤的一種或幾種把for語句的三個表達式順序弄錯第二個表達式邏輯判斷不正確(漏掉一些多出一些甚至死循環)忘記移動游標在循環體內不小心改變了游標的位置等等為什麼不能讓編譯器幫我們處理這些細節呢?在中我們可以這樣寫
public void showAll (Collection c) {
for (Object obj : c) {
Systemoutprintln((String) obj);
}
}
public void showAll (String[] sa) {
for (String str : sa) {
Systemoutprintln(str);
}
}
這樣的代碼顯得更加清晰和簡潔
不是嗎?具體的語法很簡單
使用
:
分隔開
前面的部分寫明從數組或Collection中將要取出的類型
以及使用的臨時變量的名字
後面的部分寫上數組或者Collection的引用
加上泛型
我們甚至可以把第一個方法變得更加漂亮
public void showAll (Collection<String> cs) {
for (String str : cs) {
System
out
println(str);
}
}
有沒有發現
當你需要將Collection<String>替換成String[]
你所需要做的僅僅是簡單的把參數類型
Collection<String>
替換成
String[]
反過來也是一樣
你不完全需要改其他的東西
這在J
SE(TM)
之前是無法想象的
對於這個看上去相當方便的新語言元素
當你需要在循環體中訪問游標的時候
會顯得很別扭
比方說
當我們處理一個鏈表
需要更新其中某一個元素
或者刪除某個元素等等
這個時候
你無法在循環體內獲得你需要的游標信息
於是需要回退到原先的做法
不過
有了泛型和增強的for循環
我們在大多數情況下已經不用去操心那些煩人的for循環的表達式和嵌套了
畢竟
我們大部分時間都不會需要去了解游標的具體位置
我們只需要遍歷數組或Collection
對吧?
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19801.html