很早就听说Java5新增的for/in循环,以前也曾写过一些demo,今天有空来总结一下:

       1.  for/in循环的等价

int[] arraySrc =  new  int[100]; 

for ( int i:arraySrc) 
{ 
       i = 1;  
}

 

等价于

int[] arraySrc =  new  int[100]; 

for ( int i=0; i<arraySrc.length;i++) 
{ 
      arrayScr[i] = 1; 
}

 

     2. 冒号左边的类型怎么写?

String[][] str=  new String[7][]; 
   
for(String[] s:str) 
{ 
    s =  new String[5]; 
} 
   
Vector[] v =  new Vector[2]; 

for(Vector s:v)    
{ 
        s = new  Vector(2,1); 
}

 

 冒号左边的类型是右边变量的内部元素的类型

 

    对于集合的泛型也是适用的  ,冒号左边的类型是泛型元素的类型

List<NewBean> list =  new ArrayList<NewBean>(); 

list.add( new NewBean( "title1")); 
list.add( new NewBean( "title2")); 
         
for(NewBean bean : list) 
{ 
   System.out.println(bean.getTitle()); 
}

     3. ******注意事项******

     (1) 一个for/in循环不能设置多个这样的冒号对

           像以下的,编译时会提示error

for ( int ii:arraySrc;  int jj:arrayDest) //error 
    ii = 1;

         即使写成

for ( int ii:arraySrc,  int jj:arrayDest) //error 
    ii = i;

        也是编译错误!

 

     (2) 性能没有改变,因为编译时会转化为和原来写法一样的字节码,只是有时候写代码省时间而已!不用考虑边界问题!


本文转自 Icansoft 51CTO博客,原文链接: http://blog.51cto.com/android/56361