为什么Integer.parseInt()删除0

时间:2015-12-02 21:25:53

标签: java integer

我一直试图调查为什么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位。

你能解释一下原因吗?

3 个答案:

答案 0 :(得分:1)

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

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

这些都不是实数:

0456,
0234, 
05555555, 
01

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

答案 1 :(得分:0)

第一个表达式中的零,一旦转换为整数,就不重要了。

如果是,01001之间会有什么区别?为什么转换应该以一个非重要0作为正确的选择结束,甚至比具有两个重要零的那个更好?三个重要零点怎么样?根据这个逻辑,它会更加重要!!

不,我很抱歉,删除了不重要的数据,这就是为什么字符串'01234'(当然是合法字符串)被转换为整数的原因1234

有关详细信息,请参阅here

  

前导零从来都不重要。

答案 2 :(得分:0)

因为整数不以零开头,所以零在数字整数中没有重要性,那么当解析Integer.parseInt("01234")时,从字符串到整数0将被删除1234。 相反,最后归零的地方不会被删除12340