2010-01-13 79 views

回答

6

根據文檔(http://java.sun.com/javase/6/docs/api/java/lang/Byte.html#valueOf%28java.lang.String%29),valueOf只需要其可以被解釋爲有符號十進制值的字符串,而decode採用十進制,十六進制或八進制字符串(以0x,#或0爲前綴) - 雖然valueOf被重載以明確地取其基數。

+0

這給出'有趣'的結果,就像解析0填充值'09' – Salandur 2010-01-13 20:28:55

+2

如果你知道前導0表示一個八進制字符串,那就不那麼有趣了。 – danben 2010-01-13 20:30:43

+0

0填充表示由Java語言規範定義的八進制。 – 2010-01-13 21:00:36

4

解碼方法允許您在字符串本身指定基數(十六進制,八進制),使用「0x」,「0X」或「#」表示十六進制數,「0」表示八進制數的前綴,而valueOf允許您將基數作爲數字(例如8或16)作爲可選參數傳遞。解碼(「0x10」)等價於valueOf(「10」,16)。您的示例valueOf(「0x10」)將因NumberFormatException失敗。