java BegDecimal类toString()在run和debug情况下,打印的值不相同

代码:


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)
这行代码

阅读 1.8k
1 个回答
新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题