自动装箱:指开发人员可以把一个基本数据类型直接赋给对应的包装类。
自动拆箱:指开发人员可以把一个包装类对象直接赋给对应的基本数据类型。
典型应用:
Integer i = 1 ; //装箱 其中Integer 是一个类,i是引用数据类型 1是基本数据类型
List list =new list() ; list.add(2); //装箱
int i=(Integer)list.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.5的for增强版
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()不能使用基本数据类型的数组作为可变参数,另外,可变参数可以当做数组来实现