深刻Java弗成變類型的詳解。本站提示廣大學習愛好者:(深刻Java弗成變類型的詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻Java弗成變類型的詳解正文
我們先看上面一個例子:
import java.math.BigInteger;
public class BigProblem {
public static void main(String[ ] args) {
BigInteger fiveThousand = new BigInteger("5000");
BigInteger fiftyThousand = new BigInteger("50000");
BigInteger fiveHundredThousand = new BigInteger("500000");
BigInteger total = BigInteger.ZERO;
total.add(fiveThousand);
total.add(fiftyThousand);
total.add(fiveHundredThousand);
System.out.println(total);
}
}
你能夠會以為這個法式會打印出555000。究竟,它將total設置為用BigInteger表現的0,然後將5,000、50,000和500,000加到了這個變量上。假如你運轉該法式,你就會發明它打印的不是555000,而是0。很顯著,一切這些加法對total沒有發生任何影響。
對此有一個很好來由可以說明:BigInteger實例是弗成變的。String、BigDecimal和包裝器類型:Integer、Long、Short、Byte、Character、Boolean、Float和Double也是如斯,你不克不及修正它們的值。我們不克不及修正現有實例的值,對這些類型的操作將前往新的實例。起先,弗成變類型看起來能夠很不天然,然則它們具有許多勝過與其向對應的可變類型的優勢。弗成變類型更輕易設計、完成和應用;它們失足的能夠性更小,而且加倍平安[EJ Item 13]。
為了在一個包括對弗成變對象援用的變量上履行盤算,我們須要將盤算的成果賦值給該變量。如許做就會發生上面的法式,它將打印出我們所希冀的555000:
import java.math.BigInteger;
public class BigProblem {
public static void main(String[] args) {
BigInteger fiveThousand = new BigInteger("5000");
BigInteger fiftyThousand = new BigInteger("50000");
BigInteger fiveHundredThousand = new BigInteger("500000");
BigInteger total = BigInteger.ZERO;
total = total.add(fiveThousand);
total = total.add(fiftyThousand);
total = total.add(fiveHundredThousand);
System.out.println(total);
}
}