import java.util.*;
import java.io.*;
class Test {
public static void main(String[] args) {
ArrayList<Integer> ss = new ArrayList<Integer>();
ss.add(0);
int i = ss.get(0); //1
int j = ss.get(0).intValue(); // 2
System.out.println(i);
System.out.println(ss.get(0));
sum(ss);
}
public static void sum(ArrayList list) {
int i = list.get(0).intValue(); //3
System.out.println(i);
}
}
为什么在main函数中,1和2都对(1应该不对的),而到了另外的方法中,3就找不到符号呢???
------解决方案--------------------
1、1和2都对,int和integer之间能够自动的进行封包和拆包,这是语言本身的特性
2、3不行,是因为你的形参问题
把 public static void sum(ArrayList list) 改成 public static void sum(ArrayList<Integer> list) 就可以了
------解决方案--------------------
形参没有用泛型。
如果形参不用泛型,可以强制类型转换。
private static void sum(ArrayList test) {
int k=((Integer) test.get(0)).intValue();
System.out.println(k);
}
------解决方案--------------------
从1.5开始Java支持自动拆箱,装箱操作
ArrayList list:可以存入任何类型的数据,默认是Object
ArrayList<Integer> list:只能存入int/Integer类型的数据,使用了泛型,表明只能存入该种类型数据
------解决方案--------------------
可以这么理解