/*for增强格式:for(type 变量名:集合变量名){...}
* 缺点:对于数组,不能方便的访问下标值;
* 对于集合,与使用interator相比,不能方便的删除集合中的内容(在内部也是调用interator);
* 出了简单遍历并读取其中的内容外,不建议使用怎强的for循环;
* 用法:一遍历数组
* for(Type value:array){
* expression value;
* }
* 以前我们这样写:
* void someFunction(){
* int[] array={1,2,3,4};
* int total=0;
* for(int i =0;i<array.length;i++)
* {
* total+=array;
* }
* System.out.println(total); 显然:for/in(for each)循环自动控制一次遍历数组中的
* 现在只要这样写 然后将它赋值给一个临时变量(如int n),然后再循环体中可直接对
* void someFunction(){ 此临时变量进行操作。这种循环缺点是:
* int[] array ={1,2,3,4}; 1.只能顺次遍历所有元素,无法实现复杂循环,如退回之前遍历过的元素
* int total = 0; 2.循环变量i不可见,不能知道循环到第几个元素
* for(int n:array){
* total+=n;
* }
* System.out.println(total);
* }
*
* 二:遍历集合
* 语法: for(Type value:Iterable){ for/in循环遍历的集合必须是实现Iterable接口的
* expression value;
* }
* 以前这样写:
* void someFunction(){
* List list = new ArrayList();
* list.add("hello");
* list.add("hello");
* list.add("hello");
* String s = "";
* for(Iterator iter = list.iterator();iter.hasNext();)
* {
* String temp = (String)iter.next();
* s += temp;
* }
* System.out.println(s);
* }
* 现在这样写
* void someFunction(){
* List list = new ArrayList();
* list.add("hello");
* list.add("hello");
* list.add("hello");
* String s = "";
* for(Object o :list)
* {
* String temp = (String) o;
* s+=temp;
* }
* System.out.println(s);
* }
* 结合泛型就更简单
* void someFunction(){
* List list = new ArrayList();
* list.add("hello");
* list.add("hello");
* list.add("hello");
* String s = "";
* for(String temp:list)
* {
* s +=temp;省去了对强制类型转换步骤
* }
* System.out.println(s);}
* 以上代码会被编译器转化为:
* void someFunction(){
* List list = new ArrayList();
* list.add("hello");
* list.add("hello");
* list.add("hello");
* String s = "";
* for(Iterator iter = list.iterator();iter.hasNext();)
* {
* String temp = iter.next();
* s += temp;
* }
* System.out.println(s);
* }
*
* 在这种操作中,Iterator是不可见的,所以需要调用Iterator.remove()方法。
* 所以for增强方法可以提高代码简洁行,是更方便,但是也有局限性,要选择使用;
* */ |