黑马程序员技术交流社区

标题: 普通for循环和高级for循环有什么区别 [打印本页]

作者: 一个铃,一颗珠    时间: 2013-8-22 17:42
标题: 普通for循环和高级for循环有什么区别
本帖最后由 forward 于 2013-8-23 18:26 编辑

string[] strs = {"xin","qing","abc","dcd"};
普通循环:
for(int i=0;i<strs.length;i++){
     system.out.println(strs);
}
高级循环:
for(string str : strs){
      system.out.println(str);
}
它们之间有什么区别吗?

作者: 夜默    时间: 2013-8-22 17:56
高级for循环  jdk1.5以后出现  带着泛型 就可以使用泛型
  for(数据类型 变量名:被遍历的集合(Collection)或者数组)简化书写

作者: 坚持远方    时间: 2013-8-22 18:16
高级for循环主要用来对数组,实现了Iterator接口的集合进行遍历
普通for循环可以再遍历的时候,对数组或者集合进行操作,因为那个变化的变量可以作为角标
作者: 张聪珉    时间: 2013-8-22 18:17
楼上正解,被遍历的只能是数组和集合,集合必须实现iterable接口,但是高级for有一个局限性。必须有被遍历的目标。
建议在遍历数组的时候,还是用传统for。因为传统for可以定义脚标。


作者: xinchenglong    时间: 2013-8-22 19:16


普通的

for

循环:

  

public class test {  

public static void main(String[] args) {

    int a[]={0,1,2,3,4,5,6,7,8,9};

    for(int i=0;i<a.length;i++){

     System.out.print(a[i]+" ");

    }

}

}  

增强型的

for

循环:

  

public class test {  

public static void main(String[] args) {

int a[]={0,1,2,3,4,5,6,7,8,9};

     

for(int i :a){  

      

System.out.print(i+" ");

     

}

}

}  

在上面这个例子



增强型的

for

循环



和普通

for

循环一样



增强型的

for

循环



优点主要体现在集合中,随便举个例子



比如对



set

的遍历



一般是迭代遍历:

  

Set<String> set = new HashSet<String>();

Iterator<String> it = set.iterator();



while (it.hasNext()) {





String str = it.next();





System.out.println(str);



}  

for

循环遍历:

  



for (String str : set) {  













System.out.println(str);



}  

是不是简单些

?

  

优点还体现在泛型



假如



set

中存放的是

Object

  

Set<Object> set = new HashSet<Object>();

for

循环遍历:

  



for (Object obj: set) {  













if(obj instanceof Integer){  









































int aa= (Integer)obj;  



























}else if(obj instanceof String){































String aa = (String)obj



























}  



























........



}  

如果你用

Iterator

遍历,那就晕了



map list

也一样



  

唯一的缺点就是



在遍历



集合过程中,不能对集合本身进行操作







for (String str : set) {  







set.remove(str);//

错误!







}  

  

作者: 穿靴子的猫    时间: 2013-8-22 22:02
当你只需要遍历查看数组里面的数值的时候用这种增强for很省事便捷 而如果你要对数据进行操作的时候肯定用到for了啊
作者: 穿靴子的猫    时间: 2013-8-22 22:02
当你只需要遍历查看数组里面的数值的时候用这种增强for很省事便捷 而如果你要对数据进行操作的时候肯定用到for了啊
作者: 袁梦希    时间: 2013-8-22 22:05
加油  楼主
作者: meng    时间: 2013-8-23 00:48
简单讲:高级for循环用来遍历集合与数组,
           普通for循环用来遍历数组,不能遍历集合。
作者: 王延龙    时间: 2013-8-23 03:23
增强for循环(JDK.15开始支持):
  
  适用情景:遍历数组,而不对角标指针进行操作

  语法 : for(type变量名: 集合名){...}

  增强for循环的特点:没有角标指针,不能通过指针对元素进行操作。
  
  注意事项:
  ① 迭代变量必须在( )中定义
  ② 集合可以是数组;或者是实现了Interable接口的集合类

普通for循环,属于流程控制的一种,从Java出生就开始存在了。

语法: for(循环初始语句;循环控制条件;循环迭代操作){ 循环体 }


作者: 黄兴旺    时间: 2013-8-23 16:55
亲  如果问题已解决请把类别改为已解决,谢谢。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2