在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

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

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

代碼:


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

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

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

對(duì)于這個(gè)結(jié)果我很困惑。想請(qǐng)大神來(lái)幫忙回答一下。

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

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