【发布时间】:2017-09-07 00:06:13
【问题描述】:
System.out.println(Byte.toString( (byte)(1 << 7) ));//print "-128"
System.out.println(Byte.parseByte("80", 16));//run time exception java.lang.NumberFormatException: Value out of range. Value:"80" Radix:16
为什么第一个成功而第二个失败?人们可能期望它们产生相同的输出。
【问题讨论】:
-
你读过javadoc吗?
-
来自 JavaDoc:我认为最后一个适用于您:如果发生以下任何一种情况,则会引发 NumberFormatException 类型的异常:第一个参数为 null 或长度为零的字符串。基数小于 Character.MIN_RADIX 或大于 Character.MAX_RADIX。字符串的任何字符都不是指定基数的数字,除非第一个字符可以是减号'-'('\u002D')或加号'+'('\u002B'),前提是字符串是长度大于1。字符串表示的值不是byte类型的值。
-
问你真正的问题。陈述之间的差异是显而易见的。我想您实际上想知道为什么第一个成功而第二个失败,而人们可能期望它们产生相同的输出。
-
@erickson 你所说的正是我想知道的,仍然困惑为什么第二个语句失败。
标签: java hex byte base numberformatexception