Javaでforeachを使用することによるいくつかの問題
4406 ワード
foreachまとめ:
foreachはjava 5の新しい特性であり、foreachは主にforループを強化し、配列と集合を遍歴するのに便利である.
foreachはforループの簡略化バージョンであるが、foreachはforループに完全に取って代わることはできないが、どのforeachもforループに書き換えることができ、foreachはキーワードではなく、主にこのフォーマットであり、各forの意味である.
foreach文フォーマット:
for(要素タイプtype要素変数value:オブジェクトobjを巡る){
xを参照するjava文;
}
一、foreach簡略化配列と集合の遍歴
次のコードをいくつか見て、foreachの強さと簡便さを見てみましょう.
二.foreachの使用が直面する限界
上記の例では、配列または集合のインデックスを参照する場合、foreach文ではできません.foreachは、配列または集合を正直に遍歴するだけです.次の例を見てわかります.
まとめ
foreach文はfor文の特殊な場合の強化バージョンであり、プログラミングを簡略化しています.コードの可読性と安全性が向上した(配列の境界を越えることを恐れない).比較的古いfor文にとっては良い補完である.foreachが使える場所はforを使わないことを提唱している.集合や配列インデックスに使う場合、foreachは力が入らないように見え、この時はfor文を使う時である.foreachは一般的に汎用型と組み合わせて使用される.
参考記事:http://www.cnblogs.com/hnrainll/archive/2011/11/13/2247422.html
foreachはjava 5の新しい特性であり、foreachは主にforループを強化し、配列と集合を遍歴するのに便利である.
foreachはforループの簡略化バージョンであるが、foreachはforループに完全に取って代わることはできないが、どのforeachもforループに書き換えることができ、foreachはキーワードではなく、主にこのフォーマットであり、各forの意味である.
foreach文フォーマット:
for(要素タイプtype要素変数value:オブジェクトobjを巡る){
xを参照するjava文;
}
一、foreach簡略化配列と集合の遍歴
次のコードをいくつか見て、foreachの強さと簡便さを見てみましょう.
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-12-3
* Time: 16:58:24
* Java5 foreach
*/
public class TestArray {
public static void main(String args[]) {
TestArray test = new TestArray();
test.test1();
test.listToArray();
test.testArray3();
}
/**
* foreach
*/
public void test1() {
//
int arr[] = {2, 3, 1};
System.out.println("----1---- ");
for (int x : arr) {
System.out.println(x); //
}
//
Arrays.sort(arr);
// java for each
System.out.println("----1---- ");
for (int x : arr) {
System.out.println(x); //
}
}
/**
*
*/
public void listToArray() {
// List
List list = new ArrayList();
list.add("1");
list.add("3");
list.add("4");
// froeach
System.out.println("----2----froeach ");
for (String x : list) {
System.out.println(x);
}
// ArrayList
Object s[] = list.toArray();
// froeach
System.out.println("----2----froeach ");
for (Object x : s) {
System.out.println(x.toString()); //
}
}
/**
* 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);
}
}
}
}
}
:
----1----
2
3
1
----1----
1
2
3
----2----froeach
1
3
4
----2----froeach
1
3
4
----4----foreach
1
2
3
4
5
6
7
8
Process finished with exit code 0
二.foreachの使用が直面する限界
上記の例では、配列または集合のインデックスを参照する場合、foreach文ではできません.foreachは、配列または集合を正直に遍歴するだけです.次の例を見てわかります.
/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-12-3
* Time: 17:07:30
* foreach
*/
public class TestArray2 {
public static void main(String args[]) {
//
int arr[] = new int[4];
System.out.println("---- ----");
for (int x : arr) {
System.out.println(x);
}
//
System.out.println("---- ----");
for (int i = 3; i > 0; i--) {
arr[i] = i;
}
//
System.out.println("---- ,foreach ----");
for (int x : arr) {
System.out.println(x);
}
}
}
:
---- ----
0
0
0
0
---- ----
---- ,foreach ----
0
1
2
3
Process finished with exit code 0
まとめ
foreach文はfor文の特殊な場合の強化バージョンであり、プログラミングを簡略化しています.コードの可読性と安全性が向上した(配列の境界を越えることを恐れない).比較的古いfor文にとっては良い補完である.foreachが使える場所はforを使わないことを提唱している.集合や配列インデックスに使う場合、foreachは力が入らないように見え、この時はfor文を使う時である.foreachは一般的に汎用型と組み合わせて使用される.
参考記事:http://www.cnblogs.com/hnrainll/archive/2011/11/13/2247422.html