java里 int与integer,lang与Lang等的区别

作者:某人_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。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容