在jdk1.7中我们可以在int中使用下划线, int anInt = 0b10101000_01010001_01101000_01010001;
但是如果我们有一个带下划线的字符串,则在转换为int时,它会给出数字格式异常。
为什么会这样?
答案 0 :(得分:0)
你可以在文字中使用“_”这一事实只是“语法糖” - 它是为了方便起见而添加的Java语言的一个特性。
Java语言的设计者认为这种“便利”仅适用于Java源代码(由Java编译器处理);因此只更新了编译器以允许这样的模式;但抛出异常的“解析”代码没有改变。
最有可能的是,潜在的推理是:编写从文本中解析数字的应用程序是不同的(相比之下,允许编译器理解“更易读”的文字)。
答案 1 :(得分:0)
当你有一组数字(可能有意义)作为同一个int变量的一部分时,使用整数_,就像电话号码(91_766986752)(code_number)一样。但返回的整数仅为91766986752.
ex - int anInt = 0b10101000_01010001_01101000_01010001;
在此,您可以将每个部分视为一组合理的数字,以方便用户或开发人员理解int由什么组成。编译器忽略这些_并返回剩余的int值
如果String转换为Integer,则不会忽略_,因此给出 NumberFormatException,因为它不是数字。
Ex - 字符串“91_766986752”转换为int时仍会考虑_而不是忽略它。
答案 2 :(得分:0)
还记得向后兼容吗?
因此,如果要灌输此功能更改 将在JDK 7中制作,然后是所有早期编写的代码 当' _'时,java的版本也不会抛出此异常。是 在字符串中找到。这将是一个非常严重的问题。
答案 3 :(得分:-2)
我不知道为什么,它的hapens,但你可以用点做替换,下划线。
类似的东西:
String number = 1000_000;
number = number.replace('_','.');