Heim > Java > javaLernprogramm > Was ist der Unterschied zwischen for und foreach in Java?

Was ist der Unterschied zwischen for und foreach in Java?

青灯夜游
Freigeben: 2020-10-19 11:22:46
Original
5625 Leute haben es durchsucht

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.

Was ist der Unterschied zwischen for und foreach in Java?

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(元素类型  元素名称 : 遍历数组(集合)(或者能进行迭代的)){
语句
 }
Nach dem Login kopieren

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]
  }
 }
Nach dem Login kopieren

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方法 
  }
 }
Nach dem Login kopieren

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方法获取出来存储的键值对。
  }
 }
Nach dem Login kopieren

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

gemeldet

Zum 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进行添加 
  }
 }
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage