国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

體驗J2SE 1.5新特性之增強For循環(huán)

2019-11-17 06:21:14
字體:
來源:轉載
供稿:網友

  J2SE 1.5提供了另一種形式的for循環(huán)。借助這種形式的for循環(huán),可以用更簡單地方式來遍歷數(shù)組和Collection等類型的對象。本文介紹使用這種循環(huán)的具體方式,說明如何自行定義能被這樣遍歷的類,并解釋和這一機制的一些常見問題。

  在java程序中,要“逐一處理”——或者說,“遍歷”——某一個數(shù)組或Collection中的元素的時候,一般會使用一個for循環(huán)來實現(xiàn)(當然,用其它種類的循環(huán)也不是不可以,只是不知道是因為for這個詞的長度比較短,還是因為for這個詞的含義和這種操作比較配,在這種時候for循環(huán)比其它循環(huán)常用得多)。
對于遍歷數(shù)組,這個循環(huán)一般是采取這樣的寫法:

  清單1:遍歷數(shù)組的傳統(tǒng)方式

/* 建立一個數(shù)組 */
int[] integers = {1, 2, 3, 4};
/* 開始遍歷 */
for (int j = 0; j < integers.length; j++) {
int i = integers[j];
System.out.PRintln(i);
}
  而對于遍歷Collection對象,這個循環(huán)則通常是采用這樣的形式:

  清單2:遍歷Collection對象的傳統(tǒng)方式

/* 建立一個Collection */
String[] strings = {"A", "B", "C", "D"};
Collection stringList = java.util.Arrays.asList(strings);
/* 開始遍歷 */
for (Iterator itr = stringList.iterator(); itr.hasNext();) {
Object str = itr.next();
System.out.println(str);
}
  而在Java語言的最新版本——J2SE 1.5中,引入了另一種形式的for循環(huán)。借助這種形式的for循環(huán),現(xiàn)在可以用一種更簡單地方式來進行遍歷的工作。

  1. 第二種for循環(huán)

  不嚴格的說,Java的第二種for循環(huán)基本是這樣的格式:

  for (循環(huán)變量類型 循環(huán)變量名稱 : 要被遍歷的對象) 循環(huán)體

  借助這種語法,遍歷一個數(shù)組的操作就可以采取這樣的寫法:

  清單3:遍歷數(shù)組的簡單方式

/* 建立一個數(shù)組 */
int[] integers = {1, 2, 3, 4};
/* 開始遍歷 */
for (int i : integers) {
System.out.println(i);/* 依次輸出“1”、“2”、“3”、“4” */
}
  這里所用的for循環(huán),會在編譯期間被看成是這樣的形式:

  清單4:遍歷數(shù)組的簡單方式的等價代碼

/* 建立一個數(shù)組 */
int[] integers = {1, 2, 3, 4};
/* 開始遍歷 */
for (int 變量名甲 = 0; 變量名甲 < integers.length; 變量名甲++) {
System.out.println(變量名甲);/* 依次輸出“1”、“2”、“3”、“4” */
}
  這里的“變量名甲”是一個由編譯器自動生成的不會造成混亂的名字。

  而遍歷一個Collection的操作也就可以采用這樣的寫法:

  清單5:遍歷Collection的簡單方式

/* 建立一個Collection */
String[] strings = {"A", "B", "C", "D"};
Collection list = java.util.Arrays.asList(strings);
/* 開始遍歷 */
for (Object str : list) {
System.out.println(str);/* 依次輸出“A”、“B”、“C”、“D” */
}
  這里所用的for循環(huán),則會在編譯期間被看成是這樣的形式:

  清單6:遍歷Collection的簡單方式的等價代碼

/* 建立一個Collection */
String[] strings = {"A", "B", "C", "D"};
Collection stringList = java.util.Arrays.asList(strings);
/* 開始遍歷 */
for (Iterator 變量名乙 = list.iterator(); 變量名乙.hasNext();) {
System.out.println(變量名乙.next());/* 依次輸出“A”、“B”、“C”、“D” */
}
  這里的“變量名乙”也是一個由編譯器自動生成的不會造成混亂的名字。

  因為在編譯期間,J2SE 1.5的編譯器會把這種形式的for循環(huán),看成是對應的傳統(tǒng)形式,所以不必擔心出現(xiàn)性能方面的問題。

  不用“foreach”和“in”的原因

  Java采用“for”(而不是意義更明確的“foreach”)來引導這種一般被叫做“for-each循環(huán)”的循環(huán),并使用“:”(而不是意義更明確的“in”)來分割循環(huán)變量名稱和要被遍歷的對象。這樣作的主要原因,是為了避免因為引入新的要害字,造成兼容性方面的問題——在Java語言中,不答應把要害字當作變量名來使用,雖然使用“foreach”這名字的情況并不是非常多,但是“in”卻是一個經常用來表示輸入流的名字(例如java.lang.System類里,就有一個名字叫做“in”的static屬性,表示“標準輸入流”)。

  的確可以通過巧妙的設計語法,讓要害字只在特定的上下文中有非凡的含義,來答應它們也作為普通的標識符來使用。不過這種會使語法變復雜的策略,并沒有得到廣泛的采用。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 吴桥县| 固安县| 喀喇沁旗| 交口县| 庄河市| 无棣县| 崇文区| 内黄县| 邵阳市| 香港| 瓮安县| 耒阳市| 松溪县| 广宗县| 昆明市| 苏尼特左旗| 苍山县| 太谷县| 博罗县| 江阴市| 马龙县| 商丘市| 双峰县| 安化县| 龙州县| 冕宁县| 犍为县| 潢川县| 齐齐哈尔市| 东港市| 丽江市| 昭觉县| 九江市| 玉龙| 布拖县| 贡觉县| 长治县| 龙泉市| 修武县| 磐石市| 北京市|