標籤:
Foreach 是JAVA SE5 引入的一種新的更加簡潔的文法,在遍曆數組和容器方面帶來極大的便利,但是也有其局限性。
foreach的語句格式:
for(元素類型t 元素變數x : 遍曆對象obj){
引用了x的java語句;
}
foreach簡化數組的遍曆
樣本一(一維數組):
1 import java.util.Random; 2 public class Foreach { 3 public static void main(String[] args) { 4 Random rand = new Random(); 5 int[] t = new int[5]; 6 //初始化數組 7 for(int i=0;i<t.length;i++) 8 t[i] = rand.nextInt(100); 9 10 //使用foreach遍曆數組11 for(int x:t)12 System.out.print(x + " ");13 }14 }15 /*16 *輸出結果:17 *3 46 12 27 95 18 *19 */
樣本二(二維數組)
1 public class Foreach { 2 public static void main(String[] args) { 3 //初始化數組 4 int[][] t = { 5 {2,3,4,5}, 6 {1,6,7,8} 7 }; 8 9 //使用foreach遍曆數組10 for(int x[]:t){11 for(int m : x)12 System.out.print(m + " ");13 System.out.println();14 }15 }16 }17 /*18 * 輸出結果:19 * 2 3 4 5 20 * 1 6 7 821 * 22 */
但是,值得注意的是,foreach是無法完成賦值的,也就是說,數組對於foreach語句而言只是“唯讀”的。
樣本三(foreach無法完成賦值)
1 import java.util.Random; 2 public class Foreach { 3 public static void main(String[] args) { 4 Random rand = new Random(); 5 int[] t = new int[5]; 6 //初始化數組 7 for(int i=0;i<t.length;i++) 8 t[i] = rand.nextInt(100); 9 10 //使用foreach遍曆數組11 for(int x:t)12 System.out.print(x + " ");13 System.out.println();14 15 //使用foreach進行賦值(注意,這是錯誤的做法)16 for(int x:t)17 x = rand.nextInt(100);18 //再次遍曆數組19 for(int x:t)20 System.out.print(x + " ");21 }22 }23 /*24 * 輸出結果:25 * 41 83 77 44 8026 * 41 83 77 44 8027 * 28 */
從上面樣本三可以看出來,foreach是無法對數組進行賦值的,foreach是按以下方式執行的
1 for( T x : obj){2 x = obj[i];3 x = 隨機數;4 5 }
所以才會導致無法對數組進行賦值。
Java中的Foreach使用