为什么 Integer.parseInt() 从字符串值中删除 0?

Nam*_*ame 5 java string integer

我一直在尝试调查为什么Integer.parseInt()删除 0 并返回剩余的数字。例如:

@Test
public void testInteger() {
    System.out.println(Integer.parseInt("01234"));
    System.out.println(Integer.parseInt("12340"));
}
Run Code Online (Sandbox Code Playgroud)

第一行打印1234,第二行打印12340。为什么第一行去掉0。这根本不符合逻辑。我知道 Integer 是 int 的包装对象,int 存储 32 位。

您能解释一下原因吗?

Kyl*_*son 4

因为您使用字符串“01234”作为整数(带有parseInt()),所以system.out.println正在打印一个整数。

“01234”作为整数将是 1234。这是因为 0 是唯一以零开头的整数。

这些都不是实数:

0456,
0234, 
05555555, 
01
Run Code Online (Sandbox Code Playgroud)

如果要将“01234”存储为字符串,则 0 将保留其值。