加強for迴圈
來源:互聯網
上載者:User
for迴圈是開界的。它的一般形式為: for(<初始化>; <條件運算式>; <增量>) 語句; 初始化總是一個指派陳述式, 它用來給迴圈控制變數賦初值; 條件運算式是一個關聯運算式, 它決定什麼時候退出迴圈; 增量定義迴圈控制變數每迴圈一次後 按什麼方式變化。這三個部分之間用";"分開。 例如: for(i=1; i<=10; i++) 語句; 上例中先給 " i " 賦初值1, 判斷 " i " 是否小於等於10, 若是則執行語句, 之後值增 加1。再重新判斷, 直到條件為假, 即i>10時, 結束迴圈。
目錄
需要注意的幾點
加強for迴圈
PHP中的FOR迴圈
展開
編輯本段
需要注意的幾點
1. for迴圈中語句可以為語句體, 但要用"{"和"}"將參加迴圈的語句括起來。
2. for迴圈中的"初始化"、"條件運算式"和"增量"都是選擇項, 即可以預設, 但";"不能預設。省略了初始化, 表示不對迴圈控制變數賦初值。 省略了條件運算式, 則不做其它處理時便成為死迴圈。省略了增量, 則不對迴圈控制變數進行操作, 這時可在語句體中加入修改迴圈控制變數的語句。
3. for迴圈可以有多層嵌套。
例:
#include<stdio.h>
int main(void)
{
int i, j, k;
printf("i j k\n");
for (i=0; i<2; i++) for(j=0; j<2; j++) for(k=0; k<2; k++)
printf(%d %d %d\n", i, j, k);
return 0;
}
輸出結果為: i j k 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
編輯本段
加強for迴圈
J2SE 1.5提供了另一種形式的for迴圈。藉助這種形式的for迴圈,可以用更簡單地方式來遍曆數組和Collection等類型的對象。本文介紹使用這種迴圈的具體方式,說明如何自行定義能被這樣遍曆的類,並解釋和這一機制的一些常見問題。
在Java程式中,要“逐一處理”——或者說,“遍曆”——某一個數組或Collection中的元素的時候,一般會使用一個for迴圈來實現(當然,用其它種類的迴圈也不是不可以,只是不知道是因為for這個詞的長度比較短,還是因為for這個詞的含義和這種操作比較配,在這種時候for迴圈比其它迴圈常用得多)。
對於遍曆數組,這個迴圈一般是採取這樣的寫法:
清單1:遍曆數組的傳統方式
/* 建立一個數組 */
int[] integers = {1, 2, 3, 4};
/* 開始遍曆 */
for (int j = 0; j < integers.length; j++) {
int i = integers[j];
System.out.println(i);
}
而對於遍曆Collection對象,這個迴圈則通常是採用這樣的形式:
清單2:遍曆Collection對象的傳統方式
/* 建立一個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迴圈。藉助這種形式的for迴圈,現在可以用一種更簡單地方式來進行遍曆的工作。
1. 第二種for迴圈
不嚴格的說,Java的第二種for迴圈基本是這樣的格式:
for (迴圈變數類型 迴圈變數名稱 : 要被遍曆的對象) 迴圈體
藉助這種文法,遍曆一個數組的操作就可以採取這樣的寫法:
清單3:遍曆數組的簡單方式
/* 建立一個數組 */
int[] integers = {1, 2, 3, 4};
/* 開始遍曆 */
for (int i : integers) {
System.out.println(i);/* 依次輸出“1”、“2”、“3”、“4” */
}
這裡所用的for迴圈,會在編譯期間被看成是這樣的形式:
清單4:遍曆數組的簡單方式的等價代碼
/* 建立一個數組 */
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迴圈,則會在編譯期間被看成是這樣的形式:清單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迴圈,看成是對應的傳統形式,所以不必擔心出現效能方面的問題。
編輯本段
PHP中的FOR迴圈
<?php
//PHP中FOR迴圈基本和C語言保持一致,具體如下:
for($i=1;$i<=100;$i++){
echo '這是第'.$i.'次';
}
//利用FOR迴圈,可以迴圈輸出簡單數組
$array=Array('0'=>'a0','1'=>'b1','2'=>'c2','d'=>'d3');
for($i=0;$i<=count($array);$i++){
echo $array[$i];
}
//需要注意的是,對於腳標不為數位數組,建議使用FOREACH迴圈來遍曆數組。
?>