2010-01-13 76 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失败。