登录
首页 >  文章 >  java教程

int、Integer、double、Double 比较规则详解:为什么“==” 比较时 a, c 与其他参数为真,而 b 与 d 为假,b 与 e 编译出错?

时间:2024-11-07 12:45:45 441浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《int、Integer、double、Double 比较规则详解:为什么“==” 比较时 a, c 与其他参数为真,而 b 与 d 为假,b 与 e 编译出错?》,这篇文章主要讲到等等知识,如果你对文章相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

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。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>