本文从:https://www.cn blogs.com/hellochennan/p/5373186.html进行了总结
1 .传统方式
非常简单的for循环
int [ ] a={ 1,2,3,4 }; for(intj=0; j a.length; j({intI=a[j];
system.out.println(I;
}
2. for-each循环(J2SE 1.5 ) )。
语法3:for (循环变量类型循环变量名3360遍历的对象)循环体
eg:
int [ ] a={ 1,2,3,4 }; for(inti:a ) {
system.out.println(I;
}
为什么不是foreach和in,而是for,
这是为了通过引入新的关键字来避免出现兼容性问题。
如何防止循环变量在循环体中发生变化?
可以将循环变量设置为final,以便在编译时发生错误
int [ ] a={ 1,2,3,4 }; for(finalinti:a ) {
i=i/2; /*编译时发生错误*
:只是禁止直接赋值给循环变量。 不禁止为循环变量的属性赋值,也不禁止调用改变循环变量属性的方法。
------------- -请参阅
类型兼容性问题
a、循环变量的类型也可以是正在遍历的对象的上位类型
eg:
String[] strings={'A '、' b '、' c '、' D'};
collection string list=Java.util.arrays.as list (strings ); for(objectstr:list ) {
system.out.println(str; /*依次输出" a "、" b "、" c "、" d " */}
b,循环变量的类型与待遍历的对象的类型有自动变换的关系,即:
J2SE 1.5包含一种称为“Autoboxing/Auto-Unboxing”的机制,编译器可以根据需要自动转换基本类型及其包装类(Wrapper Classes )
eg:
int [ ] integers={ 1,2,3,4 }; for(integerI:integers ) {
system.out.println(I;/*按照“1”、“2”、“3”、“4”*/}的顺序输出
------------- -请参阅
转换为Collection子类并在迭代器中遍历
eg:
int [ ] a={ 1,2,3 };
listB=a.aslist(a;
迭代器ITER=b.iterator (; wile(Iter.Hasnext () ) ) )。
Object pre=iter.next (;
system.out.println(pre;
}
或者
int [ ] a={ 1,2,3 };
listB=a.aslist(a;
for(iteratorIter=b.iterator ); iter.hasNext (; () )。
Object pre=iter.next (;
system.out.println(pre;
}
Collection子类还可以使用for-each遍历,即:
int [ ] a={ 1,2,3 };
listB=a.aslist(a; for (对象: b ) {
system.out.println(I;
}
------------- -请参阅