int、Integer、double、Double 比较规则详解:为什么“==” 比较时 a, c 与其他参数为真,而 b 与 d 为假,b 与 e 编译出错?
int、integer、double、double 比较规则详解
问题:
给定以下代码:
int a = 10; Double b = 10.0; double c = 10; Double d = 10.0; Integer e = 10;
为什么 a, c 与其他参数用 "==" 比较时都是 true,但是 b 与 d 用 "==" 比较时为 false,而 b 与 e 用 "==" 比较编译出错?
回答:
int vs. double
int 是一个基本数据类型,而 double 是一个对象。当 int 和 double 进行比较时,int 会自动转换为 double。所以 a 和 c 与 b 和 d 的比较结果都是 true,因为 10 等于 10.0。
double vs. double
double 是一个对象,对象比较的是引用地址。因此,即使 b 和 d 的值相同,但它们指向不同的引用地址,所以用 "==" 比较结果为 false。
integer vs. double
integer 也是一个对象,但是它是一个不可变的包装类,这意味着它不能改变其值。当 b 和 e 比较时,编译器会自动将 e 转换为 double,但这将导致编译错误,因为 double 无法转换为 integer。
以上就是int、Integer、double、Double 比较规则详解:为什么“==” 比较时 a, c 与其他参数为真,而 b 与 d 为假,b 与 e 编译出错?的详细内容,更多请关注其它相关文章!