哪种JAVA的变量表达式使得变量a和变量b具有相同的内存引用地址????

73 篇文章 8 订阅

一、内存引用知识

1.内存引用地址,是指栈中存放的地址,来指向堆中的某个位置。
2.int 是基本类型,数据直接存放在栈中,不存在内存引用地址的说法

二、常见比较

2.1 int与Integer、new Integer()进行==比较时,结果永远为true

1.Integer与int比较时,Integer会有拆箱的过程,我们可以看看拆箱的代码:

@Override
public int intValue(){
	return value;
}

直接返回的就是value,因此int与Integer以及new Integer()进行 ==比较时结果都是true。

2.2 Integer与new Integer()进行==比较时,结果永远为false

Integer a=n时,如果n大于等于-128小于等于127时,会直接从IntegerCache中取,不在这个范围内,会new一个对象,所以Integer与new Integer进行 ==比较时,结果都是false。

2.3Integer与Integer进行==比较时,看范围;在大于等于-128小于等于127的范围内为true,在此范围外为false。

Integer与Integer比较,需要看范围,如果在-128~127(包含-128,不包含127)范围内,因为都是从IntegerCache中取值,所以相等;若不在这个范围内,则都要去new一个对象,所以结果为false。

2.4 new Integer() 与 new Integer() 永远都是false

这是在堆内存中创建的两个不同的对象,不可能比较的地址相同的

三、代码总结

public static void main(String[] args) {
		
		// 1.int 与 任何类型 相比 都是 true
        int a1 = 127;
        Integer a2 = 127;
        System.out.println(a1 == a2); // true

        int a3 = 127;
        Integer a4 = new Integer(127);
        System.out.println(a3 == a4); // true

        int a5 = 128;
        Integer a6 = 128;
        System.out.println(a5 == a6); // true

        int a7 = 128;
        Integer a8 = new Integer(128); // true
        System.out.println(a7 == a8);

		// 2.Integer 与 Integer相比 127之间为true 大于就是false
        Integer a9 = 127;
        Integer a10 = 127;
        System.out.println(a9 == a10); // true

        Integer a11 = 128;
        Integer a12 = 128;
        System.out.println(a11 == a12); // false
		
		// 3.Integer 与 new Integer()相比 永远false
        Integer a13 = 127;
        Integer a14 = new Integer(127);
        System.out.println(a13 == a14); // false

        Integer a15 = 128;
        Integer a16 = new Integer(128);
        System.out.println(a15 == a16); // false

    }
true
true
true
true
true
false
false
false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Coding路人王

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

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

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

打赏作者

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

抵扣说明:

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

余额充值