Tbbtwt 2023-03-31 17:06 采纳率: 83.3%
浏览 29
已结题

Java的BigInteger的比较问题

  BigInteger中如果valueof两个对象相加创建一个新的对象比较的不是地址值吗,它的优化不是只有-16~16吗,为什么200也是true。
  //5.两数相加,是创建一个新的对象
        BigInteger db6 = BigInteger.valueOf(200);
        BigInteger db7 = BigInteger.valueOf(0);
        BigInteger db8 = db6.add(db7);
        //此处比较的是具体值
        System.out.println(db6 == db8); // true
  • 写回答

2条回答 默认 最新

  • pzzhao 2023-03-31 19:43
    关注

    看源码就知道了,当你add的值是0的时候,返回的是它本身

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 瞬间的未来式 2023-03-31 17:57
    关注

    chatgpt:
    这段代码中,创建了两个 BigInteger 类型的对象 db6 和 db7,分别用 BigInteger.valueOf(200) 和 BigInteger.valueOf(0) 来初始化。然后使用 add() 方法将 db6 和 db7 相加,结果赋值给了新的 BigInteger 对象 db8。

    在最后一行代码中,使用 == 运算符比较 db6 和 db8 是否是同一个对象,即它们在内存中的地址是否相同。因为 db8 是通过相加创建的新对象,所以它和 db6 在内存中的地址不同。但是 BigInteger 类型实现了 equals() 方法,因此可以使用 equals() 方法判断 db6 和 db8 的值是否相等:

    System.out.println(db6.equals(db8)); // true
    

    这样比较的结果应该为 true,因为 db6 和 db8 的值相等,都是 200。

    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 创建了问题 3月31日

悬赏问题

  • ¥15 爬虫爬取安居客新房信息
  • ¥15 php5.3内存泄露
  • ¥15 DigSilent如何复制复合模型到自己案例?
  • ¥15 求日版华为b610s-77a 官方公版固件,有偿
  • ¥15 关于#java#的问题,请各位专家解答!(相关搜索:java程序)
  • ¥15 linux tsi721的驱动编译后 insmod 提示 报错
  • ¥20 multisim测数据
  • ¥15 求无向连通网的所有不同构的最小生成树
  • ¥15 模拟器的framebuffer问题
  • ¥15 opencv检测轮廓问题