首页 > 代码库 > Java foreach
Java foreach
foreach循环也叫增强型的for循环,或者叫foreach循环。
foreach循环是JDK5.0的新特性(其他新特性比如泛型、自动装箱等)。
import java.util.Arrays;public class Main { public static void main(String[] args) { int arr[] = new int[4]; for (int x : arr) { System.out.println(x); } for (int i = 3; i > 0; i--) { arr[i] = i; } System.out.println(Arrays.toString(arr)); }}
0000[0, 1, 2, 3]
对它进行修改:
import java.util.Arrays;public class Main { public static void main(String[] args) { int arr[] = new int[4]; for(int num:arr){ num=3; } System.out.println(Arrays.toString(arr)); }}
[0, 0, 0, 0]
发现修改对其无效,但是也不报错。
add:
import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class Main { public static void main(String[] args) { String[] strArray={"111","222","333","444"}; List<String> list=new ArrayList<String>(Arrays.asList(strArray)); System.out.println(list); for(String str:list){ System.out.println(str); list.add("sss"); System.out.println("添加后:"+list); } }}
Exception in thread "main" java.util.ConcurrentModificationException[111, 222, 333, 444] at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)111 at java.util.ArrayList$Itr.next(ArrayList.java:851)添加后:[111, 222, 333, 444, sss] at com.qhong.Main.main(Main.java:13) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
remove:
import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class Main { public static void main(String[] args) { String[] strArray={"111","222","333","444"}; List<String> list=new ArrayList<String>(Arrays.asList(strArray)); System.out.println(list); for(String str:list){ System.out.println(str); list.remove(str); System.out.println("移除后:"+list); } }}
[111, 222, 333, 444]Exception in thread "main" java.util.ConcurrentModificationException111 at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)移除后:[222, 333, 444] at java.util.ArrayList$Itr.next(ArrayList.java:851) at com.qhong.Main.main(Main.java:15) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)Process finished with exit code 1
foreach这种循环一般只适合做数组的遍历,提取数据显示等,不适合用于添加删除和使用下标等复杂的操作。
foreach语句是for语句特殊情况下的增强版本,简化了编程,提高了代码的可读性和安全性(不用怕数组越界)。相对老的for语句来说是个很好的补充。
foreach循环的缺点:丢掉了索引信息。
当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息。
Java foreach
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。