2 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以BigInteger為此目的使用,但我不明白不變性如何影響用例。
您可以對(duì)一個(gè)BigInteger. 例如:
BigInteger a = BigInteger.valueOf(100);
a = a.add(BigInteger.valueOf(200));
BigInteger b = a.multiply(BigInteger.valueOf(2));
由于不變性而發(fā)生的唯一變化是,每次獲得值時(shí)都需要?jiǎng)?chuàng)建一個(gè)新對(duì)象,但您可以使用該值覆蓋當(dāng)前對(duì)象。此外,不變性在多線程情況下不易出錯(cuò)。

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
默認(rèn)情況下,Java 沒有存儲(chǔ)值大于 long 值的數(shù)據(jù)類型(關(guān)鍵字)。
有一種對(duì)象類型,您可以隨心所欲地存儲(chǔ)值 - 只要您的系統(tǒng)的 RAM 可以處理它,即 BigInteger 和 BigDecimal。
不幸的是,沒有類似的內(nèi)置類BigInteger
不是不可變的。更改 BigInteger 對(duì)象中的值的唯一方法是重新分配它,這意味著每次要更改值時(shí)都創(chuàng)建一個(gè)實(shí)例。
但是,如果您在短時(shí)間內(nèi)多次更改該值,這可能會(huì)降低性能。您可以創(chuàng)建一個(gè)String
變量,如果有更改,您可以重新分配它,然后最后您可以重新分配 BigInteger 對(duì)象。
簡(jiǎn)短的回答,沒有。
添加回答
舉報(bào)