如下,你们说obj 跟 obj2 是不是一样的?

豆鼻 2017-02-21 03:58:57
double value = 23123412340.0;
long number = (long) value;
Object obj = null;
if (value == number)
obj = String.valueOf(number);
else
obj = String.valueOf(value);

Object obj2 = String.valueOf(number == value ? number : value);

System.out.println(obj + ": " + obj2);
...全文
155 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryuugu_rena 2017-02-22
  • 打赏
  • 举报
回复
引用 5 楼 u012158650 的回复:
[quote=引用 3 楼 ryuugu_rena 的回复:] 用==比较不一样,用equals就一样。
equals 也不一样啦[/quote] 你把obj转成String类型再比较看看
豆鼻 2017-02-21
  • 打赏
  • 举报
回复
其实我用了 String.valueOf 有点儿混淆视听了。假如写成下面那样,大家应该就能得出4楼的结论 double value = 23123412340.0; long number = (long) value; Object obj1 = null; if (value == number) obj1 = number; else obj1 = value; Object obj2 = number == value ? number : value; System.out.println(obj1 + ": " + obj2); System.out.println(obj1.getClass() + ": " + obj2.getClass());
豆鼻 2017-02-21
  • 打赏
  • 举报
回复
引用 3 楼 ryuugu_rena 的回复:
用==比较不一样,用equals就一样。
equals 也不一样啦
galiniur0u 2017-02-21
  • 打赏
  • 举报
回复
是不一样的,楼主可以亲自编写代码查看,在obj2时的valueOf对应的解释是valueOf(double),因为这个判断返回了结果为long以及double类型,根据java类型转换,最终double胜出,因此导致valueOf匹配到了double类型的转换。
ryuugu_rena 2017-02-21
  • 打赏
  • 举报
回复
用==比较不一样,用equals就一样。
豆鼻 2017-02-21
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:
不一样。。在内存中地址不一样
值呢?
李德胜1995 2017-02-21
  • 打赏
  • 举报
回复
不一样。。在内存中地址不一样

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧