Java 为什么试图解析此值会导致NumberFormatException?

Java 为什么试图解析此值会导致NumberFormatException?,java,exception,Java,Exception,代码: String myVar = "1255763710960"; int myTempVar=0; try { myTempVar = Integer.valueOf(myVar); } catch (NumberFormatException nfe) { System.out.println(nfe.toString()); } java.lang.NumberFormatException: For input string: "1255763710960" 输

代码

String myVar = "1255763710960";
int myTempVar=0;
try
{ 
   myTempVar = Integer.valueOf(myVar);
}
catch (NumberFormatException nfe)
{
    System.out.println(nfe.toString());
}
java.lang.NumberFormatException: 
For input string: "1255763710960"
输出

String myVar = "1255763710960";
int myTempVar=0;
try
{ 
   myTempVar = Integer.valueOf(myVar);
}
catch (NumberFormatException nfe)
{
    System.out.println(nfe.toString());
}
java.lang.NumberFormatException: 
For input string: "1255763710960"

我完全不知道这是为什么。

您试图存储的值太大,无法放入整数中。为231-1,约20亿。这个数字比这个数字高出几个数量级


尝试使用来代替。

Java整数的最大值为2^31-1=2147483647


您应该使用Long.valueof()

1255763710960大于2147483647,因此该值不适合
int


您需要使用
long
和(或者更好地避免不必要的自动取消装箱)来解析该值。

您的字符串表示太大(>Integer.MAX_值),无法解析为int。请改为尝试long。

除了更改myTempVarAh的类型声明之外,这现在更有意义了。谢谢你,约翰!:)