最近笔者遇到一个问题
Integer cameraType=1
if (cameraType.intValue() == SourceTypeEnum.ANFANG.getType(){ }
枚举值是1
发现不同类型的两这种写法居然成立,且结果为true
于是查了很多资料 ,发现官方API 有这种说法:
If the operands of an equality operator are both of numeric type, or one is of numeric type and the other is convertible (§5.1.8) to numeric type, binary numeric promotion is performed on the operands
解释:
如果相等运算符的操作数都是数值类型,或者其中一个是数值类型,另一个可转换为数值类型(§5.1.8),则对操作数执行二进制数值提升
这句话很明显解释了现象 首先两都是数值类型,比较的时候 通过对他们进行各自的二进制转化 来进行比较 因为两者值是一样的 所以提升后 结果一样