您的位置:首页 > 编程语言 > Java开发

JDK5新特性--forEach循环

2016-10-16 15:15 375 查看
1.增强for循环概述

简化数组和Collection集合的遍历

2.格式
for(元素数据类型 变量:数组或者Collection集合){
使用变量集合,该变量就是元素
}
package cn;

public class ForDemo {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};

for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}

System.out.println("-------------");

for(int i : arr){
System.out.println(i);
}
}

}
package cn;

public class ForDemo2 {
public static void main(String[] args) {
String[] strs = new String[]{"观音姐姐","如来叔叔","玉帝哥哥","悟空第第"};

for(String str :strs){
System.out.println(str);
}
}

}
package cn;

import java.util.ArrayList;

public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();

list.add("哈哈");
list.add("呵呵");
list.add("嘻嘻");
list.add("笨笨");

for(String str :list){
System.out.println(str);
}
}

}


3.增强for循环的好处:简化了数组和集合的遍历。

4.注意事项:增强for的目标要判断是否为null
判断目标为空的代码
package cn;

import java.util.ArrayList;

public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();

list.add("哈哈");
list.add("呵呵");
list.add("嘻嘻");
list.add("笨笨");

list = null;

for(String str :list){
System.out.println(str);
}
}

}
Exception in thread "main" java.lang.NullPointerException
at cn.ArrayListDemo.main(ArrayListDemo.java:16)
所以为了避免这种错误,请你使用增强for循环的时候还是先判断目标吧。
package cn;

import java.util.ArrayList;

public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();

list.add("哈哈");
list.add("呵呵");
list.add("嘻嘻");
list.add("笨笨");

if(null != list){
for(String str :list){
System.out.println(str);
}
}

}

}


5.forEach循环其实底层就是迭代器
哈哈,不信,看下面代码
package cn;

import java.util.ArrayList;

public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();

list.add("哈哈");
list.add("呵呵");
list.add("嘻嘻");
list.add("笨笨");

if(null != list){
for(String str :list){
if(str.equals("呵呵")){
list.add("哦哦");
}
System.out.println(str);
}
}

}

}
Exception in thread "main" 哈哈
呵呵
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)
at cn.ArrayListDemo.main(ArrayListDemo.java:15)
这个异常是不是很熟悉,哈哈,就是迭代器迭代集合时修改集合的元素时出现的异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  新特性 JDK5 Each