记录BigInteger犯过的一个错误
2024-10-18 21:18:41
2019年4月18号,面试遇到的面试题,当时做错了,纪念下。
public class StrTest {
public static void main(String[] args) {
BigInteger a = new BigInteger("1");
BigInteger b = new BigInteger("2");
BigInteger c = new BigInteger("3");
BigInteger d = new BigInteger("0"); d.add(a);
d.add(b);
d.add(c);
// BigInteger result = d.add(a).add(b).add(c);
System.out.println(d.toString());
}
}
打印结果为:0
经过查看add()源码,看到如下代码:
public BigInteger add(BigInteger val) {
if (val.signum == 0)
return this;
if (signum == 0)
return val;
//注意:这里返回了新对象
if (val.signum == signum)
return new BigInteger(add(mag, val.mag), signum); int cmp = compareMagnitude(val);
if (cmp == 0)
return ZERO;
int[] resultMag = (cmp > 0 ? subtract(mag, val.mag)
: subtract(val.mag, mag));
resultMag = trustedStripLeadingZeroInts(resultMag); return new BigInteger(resultMag, cmp == signum ? 1 : -1);
}
最新文章
- Andriod 自定义控件之创建可以复用的组合控件
- [jquery]将当前时间转换成yyyymmdd格式
- 利用xhsell登录到远程腾讯云服务器
- 让Fiddler 直接抓取java程序的方法
- Class.forName()的作用
- php 短路逻辑运算符
- 通过indexPath找到对应的cell
- 无线ap和路由器wifi热点怎么区分和区别
- ●洛谷P3348 [ZJOI2016]大森林
- 转:vue项目如何刷新当前页面
- 二分图最小点覆盖König定理的简单证明 (加入自己理解)
- 读书笔记_Effective_C++_条款三:尽可能使用const
- DOUHAO
- C#——文件上传(一般处理程序ashx)
- 第21章 DMA—直接存储区访问
- tortoisegit错误: disconnected - no supported authentication methods available(server sent: publickey)
- python部署LNMP业务服务环境
- mybatis 学习六 MyBatis主配置文件
- python3 提取http请求response中的某个值
- 动手写一个简单版的谷歌TPU-矩阵乘法和卷积
热门文章
- Pycharm2018永久破解的办法
- Android 8.0 的部分坑及对应解决方法
- 【转载】Sqlserver日期时间格式化总结
- js无法获取.net设置的cookie
- :only-child和:only-of-type选择器的比较
- 数据库学习(MySQL):JDBC的简单增删改查实现
- javascript原型与原型链,prototype、__proto__、constructor
- 20190404-transition、transform转换、animation、媒体查询
- C#多线程和线程池 【转】
- 【SpringBoot笔记】SpringBoot整合Druid数据连接池