小伍随笔

导航

int和integer的区别

 

1.int是八大基本数据类型之一,integer是int的包装类;其他的基本数据类型分别为整形的Byte ,short ,long
浮点型的float和double ,字符型的char,布尔型的boolean 其中只有int和字符型的char的包装类分别为integer和Character其他都是他本身

2.integer实际是对象的引用,而int是直接储存数据值,所以integer变量必须实例化后才能使用,int变量不需要,两个数值相同的int变量是相等的
integer则不是因为通过new生产的integer变量是生成了两个对象,其内存地址不同

3.int的值只能为0,而integer可以为null,空值,所以在平时生活中如果是用于一次几次运算我个人而言一般都会使用int,而在储存中则是会用到integer
举一个例子就是数据库存储数据比如考试成绩有些课目考了有成绩,而有些没有考则没有成绩,这时候int的局限性就来了因为他只能为0或者是其他一个数
所以不能保存没有考过的成绩,而integer可以为空值,所以相比于int他的包装类integer更适合于保存数据时使用

4.int通常储存于栈内存和常量池中,  栈内存:栈内存首先是一片内存区域,存储的都是局部变量,凡是定义在方法中的都是局部变量(方法外的是全局变量)
,for循环内部定义的也是局部变量,是先加载函数才能进行局部变量的定义,所以方法先进栈,然后再定义变量,变量有自己的作用域,一旦离开作用域,
变量就会被释放。栈内存的更新速度很快,因为局部变量的生命周期都很短。

integer则储存在堆内存中堆内存:存储的是数组和对象(其实数组就是对象),凡是new建立的都是在堆中,堆中存放的都是实体(对象),
实体用于封装数据,而且是封装多个(实体的多个属性),如果一个数据消失,这个实体也没有消失,还可以用,所以堆是不会随时释放的,
但是栈不一样,栈里存放的都是单个变量,变量被释放了,那就没有了。堆里的实体虽然不会被释放,但是会被当成垃圾,Java有垃圾回收
机制不定时的收取

posted on 2021-03-16 10:11  小伍随笔  阅读(218)  评论(0编辑  收藏  举报