首页 新闻 赞助 找找看

关于int,Integer,double,Double用==比较的问题

0
悬赏园豆:10 [已解决问题] 解决于 2021-05-21 12:58
        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用==比较编译出错?希望有大佬帮我解惑?

忆尘不散的主页 忆尘不散 | 初学一级 | 园豆:163
提问于:2021-03-05 10:19
< >
分享
最佳答案
0

看了之后明白了,写的很好

收获园豆:10
闫宁 | 菜鸟二级 |园豆:212 | 2021-05-21 11:39
其他回答(4)
0

int,double是基本类型,比较的是内容,结果为true Double和Integer是引用类型,每次声明都会创建对象,对象不同对象的地址就不同,对象之间的比较时地址值的比较所以为false

爱加注解的小秃头 | 园豆:191 (初学一级) | 2021-03-05 10:46

那 int a与 Double b比较呢?结果为true是问什么呢?

支持(0) 反对(0) 忆尘不散 | 园豆:163 (初学一级) | 2021-03-05 10:51

@忆尘不散: 基本类型在和包装类(Double)比较的时候会自动装箱,a会转化为10.0与b的值比较

支持(1) 反对(0) 爱加注解的小秃头 | 园豆:191 (初学一级) | 2021-03-05 11:13

b与e比较出错是因为两个包装类之间不能比吗?

支持(0) 反对(0) 李家成 | 园豆:202 (菜鸟二级) | 2021-03-05 23:31

@李家成: 不可以,语法过不了,编译会报错

支持(0) 反对(0) 爱加注解的小秃头 | 园豆:191 (初学一级) | 2021-03-10 10:05
0

在网上查了下明白了

忆尘不散 | 园豆:163 (初学一级) | 2021-03-05 13:16
0

包装类是对象。对象==比的是地址。

a走路带风 | 园豆:206 (菜鸟二级) | 2021-05-12 16:58
0

看了下包装类的源码就明白了

cy要加油 | 园豆:208 (菜鸟二级) | 2021-05-21 11:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册