2014-07-05 40 views
0
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 

它們爲什麼不同?Java parseInt vs parseLong

+3

你知道'Integer'和'Long'有什麼不同嗎? – Ryan

+0

我知道範圍,是 – aandis

+4

您是否知道5760557950在該範圍之外? – Ryan

回答

12

Integer.parseInt()返回一個int,它是一個帶符號的32位整數。 10也是int;將576055795乘以10作爲整數溢出併產生int,然後將其提升爲long

Long.parseLong()返回一個long,它是一個有符號的64位整數。將其乘以10會產生長時間而沒有溢出。

+0

啊!堆棧溢出!謝謝 – aandis

+2

@zack:不,不是堆棧溢出。整數溢出。 – Ryan

+2

我的意思是作爲對堆棧溢出的欽佩。感覺到語氣。 – aandis