2013-03-19 20 views
86

Ben 'generateNumber'method çağrıldığında her zaman 1 artırır Uzun ilkel tür kullanıyorum. Long, maksimum sınırına ulaşırsa ne olur? herhangi bir istisna atar veya minimum değere sıfırlanır? Bu taşması ve Long.MIN_VALUE etrafında kaydırılırJava Uzun ilkel tip maksimum sınır

class LongTest { 
    private static long increment; 
    public static long generateNumber(){ 
     ++increment; 
     return increment; 
    } 
} 
+0

Oldukça geniş aralık - '8 bayt imzalı (iki tamamlayıcı). -9,223,372,036,854,775,808 ila + 9,223,372,036,854,775,807.- http://www.cafeaulait.org/course/week2/02.html – Coffee

+2

Aralıklar maksimum değere ulaştıktan sonra, minimum değere rollover alır. – Smit

cevap

278

Long.MAX_VALUE9,223,372,036,854,775,807 olduğunu.

İşlevinizi nanosaniyede bir kez çalıştırıyorsanız, this source'a göre bu durumla karşılaşmak 292 yılı aşabilir.

Bu olduğunda, başkalarının söylediğine göre, Long.MIN_VALUE veya -9,223,372,036,854,775,808'a sarılacaktır.

+201

Bu bir kaynak cehennem. – Preston

+28

En azından kaynağın süresinin dolmaması için iyi bir şans var. –

+3

Kaynağı beğendim !! – fareed

37

: İşte benim örnek kod verilmiştir.

Çok da olası değil. Saniyede 1.000.000 kat artmış olsanız bile taşması yaklaşık 300.000 yıl sürecektir.

+15

"Saniyede 1.000.000 kat artmış olsanız bile taşması yaklaşık 300.000 yıl sürecektir." GÜZEL! – jsedano

7

-9,223,372,036,854,775,808 ila +9,223,372,036,854,775,807.

yerine geri Cicles, -9.223.372.036.854.775.808

Long.MIN_VALUE. 
İlgili konular