一、基本介绍
- int是基本类型,数值范围介于-2,147,483,648 [-231]到+2,147,483,647 [2 31-1]之间,在此区间内的数值计算使用int有很高的性能。int类型占32位,且是可变的( mutable),除非用final修饰,否则可以随时改变它的值。
- Integer是对象类型,包含int属性。相比int,Integer较为庞大,就好比用一个快递箱把int包装起来。Integer类型是不可变的(immutable),如果想影响一个Integer变量的值,只能新建一个Integer对象,将原来对象丢弃。
二、特性及使用场景
不同的使用场景,选择也不同。
三、相互转换
// to int i from Integer iiint i = ii.intValue(); // to Integer ii from int iInteger ii = new Integer( i );
四、基本类型与包装类型区别
从int与Integer的区别,进一步分析基本类型与包装类型区别。
- 声明方式不同:
基本类型不使用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;
- 存储方式及位置不同:
基本类型是直接将变量值存储在栈中,而包装类型是将对象放在堆中,然后通过引用来使用;
- 初始值不同:
基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null;
- 使用方式不同:
基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到。
五、为什么有了基本类型还要有包装类型
从速度上看,int类型无需任何对象包装,体积小,速度快。如果只有一种类型,它可以做任何事情,只要让编译器自动计算出何时需要包装,何时不需要,这样岂不更方便?
就目前Java现状来看,包装类型为基本类型添加了属性和方法,丰富了基本类型的操作,使其具有了对象的性质。不同的使用场景,需要使用不同的类型。如,Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。
参考资料:
int vs Integer
http://mindprod.com/jgloss/intvsinteger.html
java中有了基本类型为什么还要有包装类型?
https://blog.csdn.net/min996358312/article/details/62894674