Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Byte.decode(";10";)和Byte.valueOf(";10";)之间有什么区别?_Java_Wrapper - Fatal编程技术网

Java Byte.decode(";10";)和Byte.valueOf(";10";)之间有什么区别?

Java Byte.decode(";10";)和Byte.valueOf(";10";)之间有什么区别?,java,wrapper,Java,Wrapper,Java6API原语类型包装器具有成对的静态方法decode(String s)和valueOf(String s)。它们都返回一个包装类类型的新对象,并且没有一个被注释为已弃用。有人知道他们之间的区别吗?例如: Byte b1 = Byte.decode("10"); 及 根据文档(),valueOf只接受可以解释为有符号十进制值的字符串,decode接受十进制、十六进制或八进制字符串(前缀为0x、#或0)-尽管的valueOf被重载,以明确地获取基数。解码方法允许您在字符串本身中指定基数(

Java6API原语类型包装器具有成对的静态方法decode(String s)valueOf(String s)。它们都返回一个包装类类型的新对象,并且没有一个被注释为已弃用。有人知道他们之间的区别吗?例如:

Byte b1 = Byte.decode("10");


根据文档(),
valueOf
只接受可以解释为有符号十进制值的字符串,
decode
接受十进制、十六进制或八进制字符串(前缀为0x、#或0)-尽管的valueOf被重载,以明确地获取基数。

解码方法允许您在字符串本身中指定基数(十六进制,八进制),使用“0x”、“0x”或“#”表示十六进制,使用“0”作为八进制数的前缀,而valueOf允许您将基数作为数字(例如8或16)作为可选参数传递。decode(“0x10”)相当于valueOf(“10”,16)。您的示例valueOf(“0x10”)将因NumberFormatException而失败。

这会给出“有趣”的结果,比如解析0填充值“09”,如果您知道前导0表示八进制字符串,那么就不那么有趣了。0填充表示八进制,这是Java语言规范定义的。我知道,但我们在使用近似格式时遇到了问题,女巫是十进制的,加了0。转换时使用的xml框架使用了decode,这导致了错误…@Salandur-这是您正在使用的xml框架中的一个错误,或者是您正在使用的方式中的一个错误。
decode
方法正在按规定工作。您(或XML框架开发人员)不应该假设
decode
valueOf
的工作方式相同。
Byte b2 = Byte.valueOf("10");