【发布时间】:2015-12-02 21:25:52
【问题描述】:
我一直在尝试调查 Integer.parseInt() 删除 0 并返回剩余数字的原因。例如:
@Test
public void testInteger() {
System.out.println(Integer.parseInt("01234"));
System.out.println(Integer.parseInt("12340"));
}
第一行打印 1234,第二行打印 12340。为什么从第一行中删除了 0。这根本不符合逻辑。我知道 Integer 是 int 的包装对象,而 int 存储 32 位。
你能解释一下原因吗?
【问题讨论】:
-
因为没有自然数01这样的东西?还是001?
-
整数不以零开头。这也是永远不要使用整数来存储电话号码的一个很好的理由。
-
整数上的前导零实际上只存在于整数的某些表示(例如、ASCII 表示,或者可能以固定大小的 CPU 寄存器)。
Integer.parseInt返回一个整数。它不会从整数中删除任何内容。然后println使用默认的 ASCII 格式打印整数。如果您想要前导 0,请使用为该格式提供前导零的打印语句。 -
@RajivJain 整数只是一个数字,例如 1 或 10 或 -5。数字前面没有 0,但表示数字的字符串可能。
-
第一个表达式中的零,一旦转换为整数,就没有意义了。