biginteger和long精度_Integer 与 Long 数字类型的比较:Java与Kotlin的细节不同

编程语言中的数字比较不总是直观的,如Java中的Long.equals(Integer)始终返回false。Java的Number类没有实现Comparable接口,导致不同数值类型间的比较复杂。Kotlin提供了更方便的compareTo方法,允许不同数字类型直接比较。
摘要由CSDN通过智能技术生成

编程语言还是比较傻的。

我们在数学中,123 == 123 , 直觉上是一目了然的。但是到了计算机编程语言中, 问题就显得有点“傻瓜”化了。

值得一提的下面的表达式:

new Long(10).equals(new Integer(10))

始终是 false,这确实是一个违背数学常理的“坑”。

再比如,在Java中

static void test2() {

// Integer的自动拆装箱的陷阱(整型数-128到127的值比较问题)

out.println("-------------------");

Integer x = new Integer(123);

Long y = new Long(123);

//out.println(x == y); // Error:(43, 23) java: incomparable types: java.lang.Integer and java.lang.Long

out.println(x.equals(y)); // false

out.println("-------------------");

Integer c = Integer.valueOf(128);

Long d = Long.valueOf(128);

//System.out.println(c == d);//Error:(49, 30) java: incomparable types: java.lang.Integer and java.lang.Long

System.out.println(c.equals(d)); // false

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值