API文檔說BigInteger是否會溢出?
所有的規格關於溢出的細節都被忽略,因爲 BigIntegers是一樣大的必要,以適應操作的結果。
這是否意味着BigInteger永遠不會溢出,假設您有足夠的內存可用?如果是這樣,我們爲什麼讓一些「類型」溢出,有些不是?
隨着語言的發展,它會傾向於隱藏程序員溢出機制的類型嗎?
API文檔說BigInteger是否會溢出?
所有的規格關於溢出的細節都被忽略,因爲 BigIntegers是一樣大的必要,以適應操作的結果。
這是否意味着BigInteger永遠不會溢出,假設您有足夠的內存可用?如果是這樣,我們爲什麼讓一些「類型」溢出,有些不是?
隨着語言的發展,它會傾向於隱藏程序員溢出機制的類型嗎?
假設您有足夠的內存來處理它,BigInteger永遠不會溢出。
要回答你的問題,爲什麼我們讓某些類型的溢出,而不是別人:
BigInteger的是不是一個真正的類型。這是一堂課。它是一個包裝類,它的設計目的是爲您提供與int相同的功能,但允許您使用盡可能大的數字,而無需擔心溢出。
類型會發生溢出,因爲它們只是簡單的幾個字節(確切數量取決於類型)的內存,而且一旦少量內存溢出,數字也會溢出。
沒有類「溢出」,除非它專門設計用於這樣做(或者如果資源不足)。一個類被定義了足夠的內存來存放它所包含的所有內容,這些內容大部分是對其他類或其他數據結構的引用。
BigInteger永遠不會溢出!它的大小是任意的,所以它可以容納與你的內存(和Java堆)相容的數量。
你read it right,它永遠不會溢出。雖然,它不會產生更多的RAM爲你:)算術運算的
語義 正是模仿了Java的整數 算術運算符,如 Java語言規範中定義。對於 示例,除以零將拋出 ArithmeticException,並將 負值除以正數產生 負數(或零)餘數。 全部 溢出的規格中的詳細信息被忽略,因爲BigIntegers 被製作得儘可能大到 容納 操作的結果。
正確,BigInteger不會溢出,它使用軟件操作和動態分配來存儲任意大小的數字。與計算中的所有東西一樣,「任意大小」也是「在底層系統資源耗盡之前」的說法。
如果是這樣,爲什麼我們讓一些「類型」溢出,有些不是?
這完全取決於它是如何支持的。如果它支持例如簡單的香草基調int
,那麼它顯然會在Integer.MAX_VALUE
溢出。基元具有清晰的溢出邊界,而對象的基元取決於它們如何被支持/編程。