For循环新特性

阅读更多

自动装箱:指开发人员可以把一个基本数据类型直接赋给对应的包装类。

自动拆箱:指开发人员可以把一个包装类对象直接赋给对应的基本数据类型。

典型应用:

   Integer  i = 1 ;  //装箱   其中Integer 是一个类,i是引用数据类型 1是基本数据类型

   List list =new list() ; list.add(2);  //装箱

   int i=Integerlist.get(0) ;  //拆箱

for循环的新特性

引入增强for循环的原因:在JDK5以前的版本中,遍历数组或集合中的元素,需先获得数组的长度或集合的迭代器,比较麻烦!

因此JDK5中定义了一种新的语法——增强for循环,以简化此类操作。增强for循环只能用在数组、或实现Iterable接口的集合类上

语法格式:                                              

for(变量类型 变量 :需迭代的数组或集合){

}

举例如下:

public class Demo03 {

//for循环的新特性  只能用于 数组   集合 实现Iterable接口的集合

@Test

public void test(){

Integer arr[] = {100,100,18,90,89};

//jdk1.4之前

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

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

}

System.out.println();

//jdk1.5for增强版

for(int i:arr){

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

}

//数组的下标从0开始  

}

//list接口

@Test

public void testList(){ //实现了Iterator接口的集合

List list = Arrays.asList("12","12","abc","cd");

for (int i = 0; i < list.size(); i++) {

String temp = (String)list.get(i);

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

}

//采用迭代器输出

Iterator it = list.iterator();

while(it.hasNext()){

String tem= (String)it.next();

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

}

//jdk 1.5

for(Object obj:list){

String str = (String)obj;

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

}

}

//jdk1.5 for 只能够取值 不能够改变值

@Test

public void testOut(){

List list = Arrays.asList(1,2,3,4,5);

for(Object obj:list){

Integer temp = (Integer)obj;

temp=100;  //不能够影响到集合中

}

for (Object obj : list) {

System.out.println((Integer)obj);

}

}

}

注意事项:

数组的下标从0开始,数组中没有length方法,只有length属性, String 则刚好相反,只有length属性,没有length方法

Arrays.asList()相当于new List()  ,Arrays.asList()不能使用基本数据类型的数组作为可变参数,另外,可变参数可以当做数组来实现

你可能感兴趣的:(JDK)