java.lang.NumberFormatException 尝试解析常规有效整数时

java.lang.NumberFormatException when trying to parse a regular valid integer

这是怎么回事?

这是checkSum = "2367122119"的值。我想将这个数字解析为这样的整数值:

int ipAddressAsInt = Integer.parseInt(checkSum.trim());

结果我得到以下异常:

java.lang.NumberFormatException: For input string: "2367122119"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:583)
    at java.lang.Integer.parseInt(Integer.java:615)
    at com.example.servlets.RDServlet.doPost(RDServlet.java:40)
    ...

此外,如果我尝试 Long.parseLong(checkSum),也会发生同样的情况。

这怎么可能?

这个数字对于 int 来说太大了:

@Test
public void testMaxInt() {
    System.out.println(Integer.MAX_VALUE);   

    System.out.println(Integer.MIN_VALUE);   

  }

2147483647

-2147483648

这个数字对于整数来说太大了。使用 Long 它应该绝对有效。像这样尝试:

  String checkSum = "2367122119";
  long ipAddressAsInt = Long.parseLong(checkSum.trim());
  System.out.println(ipAddressAsInt);

该数字超出了 int 容器的大小。您可以使用 long,但您还必须将变量声明为 long:

long ipAddressAsInt = Long.parseLong(checkSum.trim());

这在理论上应该可行....