String a = "576055795";
long b = 10*Integer.parseInt(a);
long c = 10*Long.parseLong(a);
System.out.println(b); //Prints 1465590654
System.out.println(c); // Prints 5760557950
为什么他们不同?
答案 0 :(得分:12)
Integer.parseInt()
返回int
,这是一个带符号的32位整数。 10
也是int
;将576055795
乘以10
作为整数溢出并生成int
,然后将其提升为long
。
Long.parseLong()
返回long
,这是一个带符号的64位整数。将它乘以10
得到一个长的没有溢出。