作者:某人_Valar
写了一大堆代码,突然发现一些基础知识都忘了,就写篇文章来回顾一下吧
java的数据类型可以分两种:
- 基本数据类型
- 基本数据类型对应的包装类
把Integer等看成一个类(对象,Object)
在类进行初始化时,int变量初始值为0,而Integer的变量则初始化为null。
要把Integer,Short等当成类去看待(其实他们本身也就是一个类),
他们的初始化应该是这样的,
int i =1;
Integer i= new Integer(1);
那为什么我们平时可以写成这样呢
Integer i = 3;
这就涉及到了java的自动拆箱与装箱,jdk1.5后引入的新特性http://www.cnblogs.com/shenliang123/archive/2012/04/16/2451996.html
Integer inObj = 5; //直接把一个基本类型变量赋给Integer对象。 装箱
int it = inObj; //直接把一个Integer对象赋给int类型的变量。 拆箱
举个例子:当需要往ArrayList,HashMap中放东西时,像int,double这种类型是放不进去的,因为容器都是装 object的,这时就需要这些Integer,Double了,
ArrayList al=new ArrayList();
int n=40;
Integer nI=new Integer(n);
al.add(n); //不可以
al.add(nI); //可以
并且泛型定义时也不支持int
List<Integer> list = new ArrayList<Integer>(); //可以
List<int> list = new ArrayList<int>(); //不行
用int还是Integer?
- 如果是简单的数字传递,计算,比较用int类型可以减少装箱/拆箱;
- Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,就需要用到Integer。