java Integer范围详解

  1. Integer包装类在一定范围内生成的对象是相等的,在范围外则是不等的,这个范围是[-128,128)。

public static void main(String[] args){
		Integer a = 4;
		Integer b = 4;
		System.out.println(a==b);//true
		
		Integer c = 159;
		Integer d = 159;
		System.out.println(c==d);//false
	}

这里我们要注意(1)Integer a = Integer.valueOf(4)。而不是(2)Integer a = new Integer(4)。这两种情况给是不相同的。

  • (2)是新声明出一个对象。每声明出一个对象就会在堆内存中创建一个属于这个对象的地址。让我们看看代码块及运行结果
public static void main(String[] args){
		Integer a = 4
		Integer b = 4;
		Integer b1 = new Integer(4);
		Integer b2 = new Integer(4);
		System.out.println(b1==b2);//false
		System.out.println(b==b1);//false
		System.out.printlm(b==a);//true
	}

从代码中我们可以看出b1,b2指向的地址是不同的。
b与b1,b2的也是不同的。但是与a是相同的。这是为什么呢
这就要看value这个方法的源代码了

public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

从源代码中我们可以看出传进来的i值大小在范围内[-128,128)之间则返回数组cache中已有的值。若不满足在新建一个Integer对象。我们可以理解为a,b都指向的是同一个地址(当数值相同时)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值