代码:
BigDecimal bd = new BigDecimal("1");
System.out.println(bd.toString());
问题描述:
上面这段代码,我在JDK1.7 1.8 9.0中都运行过,结果相同。正常来讲这段代码打印结果应该为1。但当我在BigDecimal类的源码处第428行打一个断点,然后在idea通过debug运行后(到了断点处,直接跳过执行就可以了),打印结果会变成0.
对于这个结果我很好奇,查看BigDecimal的toString源码,发现在debug时,开始执行BegDecimal构造方法后,stringCache变量的值变成了"0",导到toString()结果为0.
对于这个结果我很困惑。想请大神来帮忙回答一下。
备注:BigDecimal 428行的代码是BigDecimal类的构造方法中的
if (offset + len > in.length || offset < 0)
这行代码
参考:
https://bugs.java.com/bugdata...