首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在Java7中number类上的valueOf/parse方法会拒绝有效的数字?

为什么在Java7中number类上的valueOf/parse方法会拒绝有效的数字?
EN

Stack Overflow用户
提问于 2011-06-24 03:03:08
回答 2查看 403关注 0票数 1

两个下划线都不是:

代码语言:javascript
复制
scala> java.lang.Float.valueOf("1_2_3.4_5_6")
java.lang.NumberFormatException: For input string: "1_2_3.4_5_6"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1242)
    at java.lang.Float.valueOf(Float.java:416)

也不能使用二进制文字:

代码语言:javascript
复制
scala> java.lang.Byte.valueOf("0b01010101")
java.lang.NumberFormatException: For input string: "0b01010101"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Byte.parseByte(Byte.java:148)
    at java.lang.Byte.valueOf(Byte.java:204)
    at java.lang.Byte.valueOf(Byte.java:230)

这些方法没有针对Java语言中的变化进行更新的原因是什么?

(我正在使用Java64位服务器VM,实际上是OpenJDK 1.7.0_136-icedtea。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-24 04:00:26

我看了两眼。我估计其他数字也差不多:

Java7中的valueOf方法指定的语法与Java6中的valueOf方法没有什么不同。Java7的API特别声明不允许使用下划线。

numeric literals中将允许使用下划线,而不是可解析的字符串。这很可能是@Voo的java标识符的意思。

票数 3
EN

Stack Overflow用户

发布于 2011-06-24 03:37:22

最重要的是,您不能仅仅因为喜欢就更改公共API的签名;)

他们可以实现一些额外的方法来根据这些新的变化来解析浮点数,但是这些方法是用来解析数字的,而不是java标识符,所以仅仅因为语言规范在这方面的改变并不意味着浮点/整数的解析也应该改变。

还要注意,到目前为止,Integer.valueOf也没有接受"0x“,所以他们没有理由现在就开始接受它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6459303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档