java小知识点(int和integer区别)

int和integer

(1)Integer是int的包装类,一般需要实例化实现,有拆箱和装箱;int是基本数据类型;
(2)Integer实际是对象的引用,指向new产生Integer对象;int是直接存储数据值;
(3)Integer的默认值是null;int的默认值是0

int和Interger地址空间

一:int是常量池

int a =8;
int b =8;
if(a==b)//ture

int a 相当于生成一个栈地址a.然后a地址指向了常量池中8;int b也生成一个栈地址,也指向了常量池8中,两个地址相同

二: Integer 是包装类,Integer变量实际上是对一个Integer对象的引用

Integer i =new Integer();

(1)两个integer,两个new分别生成两个堆地址空间

Integer i =new Integer(1);
Integer b =new Integer(1);
if(i==b)//false

(2)Integer 和int,int为常量池,new分堆地址空间,不是一个地址空间

int a =8;
Integer i =new Integer(8);
if(a==i)//false

自动装箱和自动拆箱

(1)自动装箱

Integer m =8;

8是属于基本数据类型,它是不能直接赋值给一个对象Integer的。但jdk1.5后你就可以进行这样的声明,自动将基本数据类型转化为对应的封装类型,成为一个对象以后就可以调用对象所声明的所有的方法。

(1)自动拆箱

Integer m =8;
m++;

对象时不能直接进行运算的,而是要转化为基本数据类型后才能进行加减乘除

Integer n 和 new Integer

(1):Integer m和new Integer
Integer n装箱,将静态常量池中数组中存储的指向了堆中的Integer对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同。

Integer m = new Integer(8);
Integer n = 8;
System.out.print(i == j); //false

(1)Integer m和Integer n
对于两个非new生成的Integer对象,将Integer 拆解为常量,指向常量,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false。
而如果在-128~127之外的数,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个 Integer对象。

Integer n = 8;
Integer m = 8;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gun_wqy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值