鍍金池/ 問答/Java  HTML/ java BegDecimal類toString()在run和debug情況下,

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

代碼:


BigDecimal bd = new BigDecimal("1");
System.out.println(bd.toString());

問題描述:
上面這段代碼,我在JDK1.7 1.8 9.0中都運行過,結(jié)果相同。正常來講這段代碼打印結(jié)果應(yīng)該為1。但當我在BigDecimal類的源碼處第428行打一個斷點,然后在idea通過debug運行后(到了斷點處,直接跳過執(zhí)行就可以了),打印結(jié)果會變成0.

對于這個結(jié)果我很好奇,查看BigDecimal的toString源碼,發(fā)現(xiàn)在debug時,開始執(zhí)行BegDecimal構(gòu)造方法后,stringCache變量的值變成了"0",導到toString()結(jié)果為0.

對于這個結(jié)果我很困惑。想請大神來幫忙回答一下。

備注:BigDecimal 428行的代碼是BigDecimal類的構(gòu)造方法中的
if (offset + len > in.length || offset < 0)
這行代碼

回答
編輯回答
故林
2017年4月4日 07:51