java == 号执行时比较情况补充

java == 号执行时比较情况补充

突然发现一个问题, 下图:
在这里插入图片描述
在这里插入图片描述
a与b和c用 == 号比较时执行结果都为true
b和c用 == 号比较结果为false(这个结果大家都知道原因b与c在堆区地址不同, 结果肯定为false)
但是a和c比较为true, a和b比较也为true, 这到底是为什么呢?

于是我通过编译查看生成的字节码文件, 试图找到答案
在这里插入图片描述
在这里插入图片描述

果不其然在字节码文件里找到了端倪
c与b直接将内存地址压入栈进行比较, a与b比较时b调用了doubleValue函数取出值再与a的值比较

总结

"=="号不一定是比较两个数的地址, 对于不是new出来的要特别小心

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值