概述
Jdk1.5新特性之增强for循环
1.概念:java SE5引入了一种新的更加简洁的for循环,即增强for循环,也叫Foreach循环(是for循环的一种),用于数组和容器(集合类)。使用foreach循环遍历数组和集合元素时,无需获得数组和集合长度,无需根据索引来访问数组元素和集合元素,因为强大的foreach循环会自动遍历数组和集合的每一个元素。
2.Foreach循环的格式:
for(type variableName : array | collection)
{
//variableName 自动迭代访问每一个元素....
}
对格式解释:
type是数组元素或者集合元素的类型,variableName表示一个形参名,array | collection 是需要被迭代的数组或者集合(该集合是一个实现了Iterable接口的类对象),foreach循环将自动将数组元素、集合元素依次赋给该变量。
3.传统for循环和增强for循环:
举一个最简单的例子,定义一个整形数组并初始化,然后要打印该数组的元素。
传统for循环的做法:
int [] arr = newint[]{2,3,5,70,12,34};
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+",");
}
传统数组用旧式的for循环组装的,组装时必须按索引访问它。
foreach 循环的做法:
int [] arr = newint[]{2,3,5,70,12,34};
for(int arrEle :arr){
System.out.println(arrEle+",");
}
在foreach循环中就不需要索引了。任何返回一个数组的方法都可以使用foreach循环。例如,String类有一个方法toCharArray(),
它返回一个char数组,也可以使用foreach循环
for(char c : "I love java , do you ?".toCharArray()){
System.out.print(c+" ");
}
那么可以很容易的知道foreach循环比传统的循环更加的简洁,是的遍历数组或集合更加便利。但是,如果需要根据索引来访问数组或集合中的某一个元素,那么foreach循环就做不到了,这时候就需要传统的for循环了。
4.foreach循环的弊端以及如何解决:
从上面可以看出foreach循环比传统for循环更加便利,但是,foreach循环也是有弊端的,就是foreach循环的目标不能为null,我们来看看下面这段代码:
List<String> list = null;
for(String l :list){
System.out.print(l);
}
运行后跑出异常:
Exception in thread "main" java.lang.NullPointerException
那如何解决弊端呢?那就要先对需要迭代的目标进行null判断。
List<String> list = null;
if(list != null){
for(String l :list){
System.out.print(l);
}
}
我们在获取数组或集合元素时先对该集合或数组进行判断,其实这就是迭代器的功能,接下来会说foreach循环和迭代器。
5.迭代器和for-each循环:
foreach循环构建在迭代器之上。为了遍历集合,集合必须能够通过发送消息iterator,已返回一个迭代器。foreach循环通过检验集合是否实现了接口 java.lang.Iterable,从而判断某个集合是否可以迭代。
一下代码仅限参考:
publicclass addString<String>implements Iterable{
private ArrayList<String> arrlist = new ArrayList<>();
publicvoid addStr(String s){
arrlist.add(s);
}
public String getStr(int i){
returnarrlist.get(i);
}
@Override
public Iterator<String> iterator() {
// TODO Auto-generated method stub
returnarrlist.iterator();
}
}
然后有一个测试类
publicclass TestIterate {
publicstaticvoid main(String[] args) {
addString<String> addS=new addString<>();
addS.addStr("wo");
addS.addStr("love");
addS.addStr("java");
for(String s :addS){
System.out.println(s);
}
}
}
迭代器就可以对addS进行迭代。
最后
以上就是震动大炮为你收集整理的jdk1.5新特性之增强for循环的全部内容,希望文章能够帮你解决jdk1.5新特性之增强for循环所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复