先是說for比while更安全,因為for是把一推東西都寫在括號中的嘛.
而while需要現在外部定義乙個物件,
所以,while中可能出現如此**,
iteratori = c.iterator();
while(i.hasnext())
//...
iteratori2 = c2.iterator();
while(i.hasnext())
for迴圈就不可能出現.
然後,就是乙個比較有意思的,可能你知道,算俺少見多怪吧...
for (int i = 0, j = 1, k = 2;;)
-------------------
"利用for-each迴圈不會有效能損失,甚至用於陣列也一樣。實際上,在某些情況下,比起普通的for迴圈,它還稍有些效能優勢,因為它對陣列索引的邊界值只計算一次。"
public static void main(string args)
long forend = system.currenttimemillis();
for (int i : iarr)
long foreach = system.currenttimemillis();
system.out.println("for:" + (forend - forbegin) + " foreach:" + (foreach - forend));
//輸出結果,for:31 foreach:16
}public static void test(int i)
看輸出結果,果不其然!for-each是怎麼實現的呢?看來肯定不是用普通for迴圈鳥...
-------------------
在看乙個,書中要講明要用for-each,盡量不要用for的乙個例子,for可能會遇到的乙個問題,
public static void main(string args) }}
enum suit
enum rank
當然,解決辦法簡單到只需在第二個for迴圈前把i.next()賦給乙個物件.
但是,曰不優雅呀!
okay,於是乎就這樣了,
for (suit suit : suits)
for (rank rank : ranks)
deck.add(new card(suit,rank));
要注意呀,"for-each迴圈不僅讓你遍歷集合和陣列,還讓你遍歷任何實現iterable介面的物件",o耶,以後要玩集合都要實現iterable鳥...
-------------------
至於最後提單的,"過濾"和"轉換"時不要用for-each並非沒有瑕疵.如果是個物件的集合的話,用for-each做remove(過濾)和為屬性賦值(轉換)應該也是木問題的.
當然,如果是簡單型別集合的話,"轉換"與"過濾"不宜用for-each了.("轉換",如果使用=或者new的話,即使是物件集合,也是不行的吧)
《朱自清講國學》筆記
說文解字。文字相傳是由倉頡所造,其意義在其產生的本源似乎並不是為了文化 知識等的傳承,是作為一種巫術。想來似乎蠻有道理。現在所謂的詛咒 預言等不都是一些符號或者文字遊戲嗎?但文字的產生確實給社會 給人類帶來了極大的推動。最初文字是為統治所用。使用文字統一思想,統一國民價值觀歷來是統治者們屢試不爽的工...
英語筆記46 50講
第46講 a,先行詞是人的話用that,who,whom,whose來引導定語從句,when,where,why why 用於修飾表示原因的名詞 eg.the reason we don t know the reason why he didn t show up when 修飾表示時間的名詞 e...
英語學習筆記7 10講
第七講 實意動詞 實意動詞有數量上的變化和時態上的變化 come來read讀go去watch看play玩fly飛 例 實意動詞的否定 提問 回答 使用助動詞進行否定 在助動詞do does did 後面加not 例 使用助動詞進行提問 例 第九講 when什麼時候where哪兒who誰what什麼h...