为什么 java Integerwrapper==primitivedouble

下面的代码编译良好并在 java 中产生 true 。我读过 java 不会同时进行两次转换,就像将int文字值(或变量)分配给Double包装器引用时一样。那么为什么与使用 = 运算符相比,它编译得更好呢?


double double1 = 3.00;

Integer wInt = new Integer("3");

if(wInt == double1);


慕森王
浏览 117回答 1
1回答

慕田峪9158850

与其他数学运算符(例如 )一样+,该运算符对其操作数==执行二进制数值提升。当运算符将二进制数字提升应用于一对操作数时(每个操作数必须表示可转换为数字类型的值),将按顺序应用以下规则:如果任何操作数是引用类型,则将对其进行拆箱转换(第 5.1.8 节)。加宽基元转换(第 5.1.2 节)应用于转换一个或两个操作数...编译器首先将 拆箱Integer为 an int,然后将 扩展int为 a double。如果首先进行拆箱,它将同时执行这两项操作。Java 将为许多运算符隐式执行这两种转换:对某些运算符的操作数执行二进制数字提升:乘法运算符*、/和%(§15.17)数字类型的加法和减法运算符 and +( -§15.18.2)数值比较运算符<、<=、>和>=(§15.20.1)数值相等运算符==和!=(§15.21.1)整数按位运算符&、^和|(§15.22.1)在某些情况下,条件运算符? :(§15.25)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java