Integer中的小问题

首先看下代码,在心里想象一下运行结果:

public class TestInteger {	
	public static void main(String[] args) {
		Integer a=new Integer(127);
		Integer b=new Integer(127);
		Integer a1=127;
		Integer b1=127;
		Integer a2=128;
		Integer b2=128;
		System.out.println("a==b: "+(a==b));
		System.out.println("a1==b1: "+(a1==b1));
		System.out.println("a2==b2: "+(a2==b2));
	}
}

结果如下,看看是否与你想的答案一致:

下面我来简单的说一下我的理解:

       首先来看运行结果的第一行,相必都没什么问题,不同的对象之间 == 肯定是不成立的,而运行结果的第二行和第三行明明只相差了一点点,为什么结果会是不一样?

       因为当将介于-128~127之间的short,int整数和小于127的boolean,byte,char的数值赋值给Integer时会被包装到固定的对象中,接下来如果再将一样的数赋值给另一个Integer时则会将该Integer的存储地址指向之前的那个相同的数所处的地址。所指地址一样时 == 是肯定成立的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值