java =与== 一道小题引发的思考

第一眼看这个题,以为会编译不通过,结果正确答案会输出 true。

后来经过下边的评论以及亲身试验得知,JAVA的赋值运算是有返回值的,赋了什么,返回什么,所以if里边只能有布尔型的赋值语句,如果这题是==就返回false了(个人认为和是不是封装类型没有太大关系,因为只是涉及到自动拆箱,主要还是赋值运算有返回值)

ps:

=:是一个赋值运算符,赋给某个变量一个具体的值。

==:是一个比较运算符

  1)基本型和基本型进行“==”运算符的比较,直接比较两个值

     2)基本型和封装型进行“==”运算符的比较,封装型将会自动拆箱变为基本型后再进行比较

     3)封装型和封装型进行“==”运算符的比较,比较的是两个对象的地址

  4)两个Integer类型进行“==”比较,如果其值在-128至127,相等返回true,否则返回false, ,如果有new出来的Integer则都返  回false,因为比较的是地址。(此处拿Integer举例,原理为封装类型的缓存机制,有兴趣盆友可以去看看jdk源码)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值