Heim >Java >javaLernprogramm >Was ist der Unterschied zwischen for und foreach in Java?
Unterschied: 1. foreach ist effizienter, wenn die Anzahl der Schleifen unbekannt ist oder es schwierig ist, die Anzahl der Schleifen zu berechnen, während for bei komplexeren Schleifen effizienter ist. 2. foreach unterstützt keine Additions- und Löschoperationen in Schleifen , kann das Array oder die Sammlung nicht geändert werden, die for-Schleife jedoch schon.
Verwandte Empfehlungen: „Java Video Tutorial“
Lassen Sie uns zunächst über foreach sprechen, das auch als erweiterte for-Schleife bezeichnet wird und eigentlich eine spezielle vereinfachte Version der for-Schleife ist.
Lassen Sie uns über das Schreibformat von foreach sprechen:
for(元素类型 元素名称 : 遍历数组(集合)(或者能进行迭代的)){ 语句 }
Obwohl foreach eine vereinfachte Version der for-Schleife ist, bedeutet dies nicht, dass foreach nützlicher ist als for Schleifen sind unbekannt oder es ist mühsam, die Anzahl der Schleifen zu berechnen. In einigen Fällen ist die Verwendung effizienter, bei einigen komplexeren Schleifen ist jedoch die Verwendung von for-Schleifen erforderlich, um effizienter zu sein.
Schauen wir uns das folgende Beispiel an:
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] } }
Aber im Vergleich dazu ist es für uns etwas mühsam, eine for-Schleife zur Eingabe zu verwenden
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方法 } }
Zusätzlich zu dieser gewöhnlichen Sammlung kann dies auch der Fall sein Wird für Schlüssel-Wert-Paare wie Map
Zum Beispiel:
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方法获取出来存储的键值对。 } }
Darüber hinaus unterstützt foreach das Hinzufügen von Löschvorgängen in der Schleife nicht, da bei Verwendung der foreach-Schleife das Array (die Sammlung) bereits gesperrt ist und nicht geändert werden kann. andernfalls wird eine java.util.ConcurrentModificationExceptionException
gemeldetZum Beispiel:
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进行添加 } }
Die Zusammenfassung lautet also wie folgt:
foreach eignet sich nur zum Durchlaufen einer Sammlung oder eines Arrays, während for effizienter ist in komplexeren Schleifen.
foreach kann das Array oder die Sammlung nicht ändern (Hinzufügen oder Löschen von Vorgängen). Wenn Sie es ändern möchten, müssen Sie eine for-Schleife verwenden.
Daher ist die for-Schleife im Vergleich flexibler.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen for und foreach in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!