第一眼看这个题,以为会编译不通过,结果正确答案会输出 true。
后来经过下边的评论以及亲身试验得知,JAVA的赋值运算是有返回值的,赋了什么,返回什么,所以if里边只能有布尔型的赋值语句,如果这题是==就返回false了(个人认为和是不是封装类型没有太大关系,因为只是涉及到自动拆箱,主要还是赋值运算有返回值)
ps:
=:是一个赋值运算符,赋给某个变量一个具体的值。
==:是一个比较运算符
1)基本型和基本型进行“==”运算符的比较,直接比较两个值
2)基本型和封装型进行“==”运算符的比较,封装型将会自动拆箱变为基本型后再进行比较
3)封装型和封装型进行“==”运算符的比较,比较的是两个对象的地址
4)两个Integer类型进行“==”比较,如果其值在-128至127,相等返回true,否则返回false, ,如果有new出来的Integer则都返 回false,因为比较的是地址。(此处拿Integer举例,原理为封装类型的缓存机制,有兴趣盆友可以去看看jdk源码)