Java 中int和Integer的区别

Java各种数据类型详细介绍及其区别

基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。

Java中的简单类型从概念上分为四种:实数、整数、字符、布尔值。但是有一点需要说明的是,Java里面只有八种原始类型,其列表如下:

实数:double、float

整数:byte、short、int、long

字符:char

布尔值:boolean

复杂类型和基本类型的内存模型本质上是不一样的,简单数据类型的存储原理是这样的:

所有的简单数据类型不存在“引用”的概念,简单数据类型都是直接存储在内存中的内存栈上的,数据本身的值就是存储在栈空间里面,而Java语言里面只有这八种数据类型是这种存储模型;而其他的只要是继承于Object类的复杂数据类型都是按照Java里面存储对象的内存模型来进行数据存储的,使用Java内存堆和内存栈来进行这种类型的数据存储,简单地讲,“引用”是存储在有序的内存栈上的,而对象本身的值存储在内存堆上的。

Integer是int的封装类,里面有很多进行处理的静态方法

Integer是对象而int不是,内存的分配位置也不一样

Integer的属性和其他类一样的!在方法里都是引用传递,而原始类型是值传递!

jdk1.5以后可以从int自动装箱Integer类。

int是为了兼容以前的编程语言使用的基本类型,目的是让程序效率更高,以为它是直接分配到栈上的。所以它不是对象,不能有类似 int.operation()的操作。

Integer是java中一切都是对象这个大前提下的int的包装类型,可以使用方法,是个对象,是用new分配到堆上的。

jdk1.5后,引入了类似c#中的自动装、拆箱,使得Integer i = 1;这样的表达直接可行。