違い: 1. ループ数が不明な場合、またはループ数の計算が面倒な場合は foreach の方が効率的ですが、より複雑なループでは foreach の方が効率的です; 2. foreach はループではサポートされていません操作を追加および削除する場合、配列またはコレクションは変更できませんが、for ループは変更できます。
関連する推奨事項: 「Java ビデオ チュートリアル 」
まず、foreach について説明します。 for ループ、foreach は実際には for ループの特別に簡略化されたバージョンです。
foreach の記述形式について話しましょう:
for(元素类型 元素名称 : 遍历数组(集合)(或者能进行迭代的)){ 语句 }
foreach は for ループの簡略化されたバージョンですが、それが意味するものではありません。 foreach は for よりも強力です。使いやすいです。ループの数が不明な場合、またはループの数を計算するのが面倒な場合は、foreach の方が効率的です。ただし、一部のより複雑なループでは、効率を高めるために for ループを使用する必要があります。 。
次の例を見てみましょう:
public static void main(String[] args) { List<String> arr = new ArrayList<String>(); arr.add("你好"); arr.add("我好"); arr.add("大家好"); //foreach循环 for(String str : arr){ //这里的str就是为了获取每次循环的arr中的值 System.out.println(str); //就相当于 String str=arr[i] } }
しかし、それに比べて、for ループを使用するのは少し面倒です。
public static void main(String[] args) { List<String> arr = new ArrayList<String>(); arr.add("你好"); arr.add("我好"); arr.add("大家好"); //for循环 for(int i=0;i<arr.size();i++){ System.out.println(arr.get(i)); //要获取list中元素需要用get方法 } }
を入力するには、この通常のコレクションに加えて、map
などのキーと値のペアを使用することもできます。例:
public static void main(String[] args) { Map<String,String> mapstr = new HashMap<String,String>(); mapstr.put("王", "男"); mapstr.put("李", "男"); mapstr.put("张", "女"); //entrySet方法是为了获取键值对的集合 for(Map.Entry<String, String> s : mapstr.entrySet()){ //这里的Map.Entry<String, String>其实就是一个类型 用来表示键值对的类型 System.out.println("key="+s.getKey()); //这里其实还是相当于 s=maostr.entrySet,只不过s存储的是键值对。 System.out.println("value="+s.getValue()); //所以可以用get方法获取出来存储的键值对。 } }
さらに、foreach は追加をサポートしていません。 foreach を使用するときループ内で操作を削除する場合、配列 (コレクション) はロックされており変更できません。それ以外の場合は、java.util.ConcurrentModificationExceptionException
例:
public static void main(String[] args) { List<String> arr = new ArrayList<String>(); arr.add("你好"); arr.add("我好"); arr.add("大家好"); //foreach循环 for(String str : arr){ System.out.println(str); arr.add("1"); //对arr进行添加 } }
要約は次のとおりです。
foreach はコレクションまたは配列を単に走査するのに適していますが、より複雑な場合には for の方が効率的です。ループします。
Foreach では配列またはコレクションを変更 (操作の追加または削除) できません。変更する場合は、for ループを使用する必要があります。
つまり、for ループはそれに比べてより柔軟です。
以上がJavaのforとforeachの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。