Java中For-Each迴圈的使用
for-each這種集合的遍歷方法最初是在Perl中接觸的foreach。開始的時候受C語言的影響多少有些不習慣,不過寫了兩段程式碼之後就覺得十分適應了,因為這種描述方式與我們的日常表達語言十分相似。再接下來的接觸自然是Python,感覺兩種方式差不多,但是在Python我又習慣了當子元素作為一個集合的時候。
Java的遍歷語句語法介於兩者之間,但是由於本身是強資料型別的語言,在子元素的宣告上需要加上一個資料型別。當然,或許是由於最新接觸,相比之前已經習慣了的Perl和Python,現在的這種使用習慣還是感覺有一點奇怪。
測試程式碼:
packageForEachPack;
public
class
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array_data ={1,5,3,6,2,4,7,8,4,12,55,22,99,47,12,53};
for(int num : array_data)
{
System.out.print(num + ", ");
}
}
}
程式編譯執行後很順利依次輸出了陣列的各個元素。
想想看,Perl以及Python語言的語法簡潔的優勢很大程度上應該是取決於指令碼語言的特性,非強資料型別。但是畢竟指令碼語言在執行速度以及可靠性方面跟編譯型的語言還是有一定的差距。
修改一下程式進行二維陣列的測試,順便對Java多維陣列可以是不規則的這種特性做一下簡單的測試。程式碼如下:
packageForEachPack;
public class ForEachClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] array_data ={{1,5,3},{6,2,4,7,8,4},{12,55,22,99,47,12,53}};
for(int[] num : array_data
{
for(int sub_num : num)
{
System.out.print(sub_num + ", ");
}
System.out.println();
}
}
}
程式碼編譯執行:
1, 5,3,
6, 2,4, 7, 8, 4,
12,55, 22, 99, 47, 12, 53,
這是不同於C語言的一種很有意思的語言特性。在C語言中,雖然也可以通過模擬對多維陣列進行模擬,但是C語言中要求陣列中每個物件的資料型別都完全一致。而Java中這部分則相對更加靈活一些,不知道這樣是否也會意味著與此相關的Bug增加。進行多維陣列的訪問相比指令碼語言來說還真是有一些不是很方便的地方了,畢竟每一層的遍歷都必須的知道相應元素的資料型別才好。