foreach文法可以不必建立int變數去對由訪問項構成的序列進行計數,foreach將自動遍曆獲得每一項
foreach文法如下
for(變數類型 x : 該變數的序列){
statement
}
foreach語句是for語句的特殊簡化版本,但是foreach語句並不能完全取代for語句,然而,任何的foreach語句都可以改寫為for語句版本。foreach並不是一個關鍵字,習慣上將這種特殊的for語句格式稱之為“foreach”語句。從英文字面意思理解foreach也就是“for 每一個”的意思。實際上也就是這個意思。foreach的語句格式:for(元素類型t 元素變數x : 遍曆對象obj){ 引用了x的java語句;}下面通過兩個例子簡單例子看看foreach是如何簡化編程的。代碼如下:
用foreach遍曆float數組
public class foreachfloat{
public static void main(string [] args){
random rand = new random(47);
float f[] = new float[10];
for(int i=0;i < 10;i++){
f[i]=rand.nextfloat();
}
for(float x : f)
system.out.println(x);
}
}
輸出
0.32454357
.
.
. //共10行
如上例所示
for(float x : f){
這條語句定義了一個名為x的float型變數,而後將每一個值遍曆到x
}
任何數組或傳回值是數組的方法都可以應用於foreach。
public class foreachstring{
publicn static void main(string [] args){
for(char c : “hello word”.tochararray()){
system.out.print(c+” ”);
}
}
}
輸出
h e l l o w o r d
但foreach不能直接對不存在的一組邏輯數字進行遍曆,但for卻可以
例如 for(int i=0;i < 100;i++)
如果想直接對數字進行遍曆需要建立int型的數組,但可以做個靜態方法自動根據傳入數字來建立數組
例如for(int i : range(10))
這種方法雖然可以使得foreach更通用,但是這種方法會降低電腦效率
/**
* foreach輸出二維數組測試
*/
public void testarray2() {
int arr2[][] = {{4, 3}, {1, 2}};
system.out.println("----3----foreach輸出二維數組測試");
for (int x[] : arr2) {
for (int e : x) {
system.out.println(e); //逐個輸出數組元素的值
}
}
}
/**
* foreach輸出三維數組
*/
public void testarray3() {
int arr[][][] = {
{{1, 2}, {3, 4}},
{{5, 6}, {7, 8}}
};
system.out.println("----4----foreach輸出三維數組測試");
for (int[][] a2 : arr) {
for (int[] a1 : a2) {
for (int x : a1) {
system.out.println(x);
}
}
}
}