Java不可變類型的詳解
在Java語言中都有哪些不可變類型呢?下面小編為大家介紹了Java不可變類型,希望能幫到大家!
我們先看下面一個例子:
複製代碼 代碼如下:
import nteger;
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 = ;
(fiveThousand);
(fiftyThousand);
(fiveHundredThousand);
tln(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 nteger;
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 = ;
total = (fiveThousand);
total = (fiftyThousand);
total = (fiveHundredThousand);
tln(total);
}
}
-
java讀取解析xml文件實例
如何在Java中讀取解析文件呢?下面小編為大家整理了java讀取解析xml文件實例,希望能幫到大家!讀取本地的xml文件,通過DOM進行解析,DOM解析的特點就是把整個xml文件裝載入內存中,形成一顆DOM樹形結構,樹結構是方便遍歷和和操縱。DOM解析的特性就是讀取xml文件轉換為dom...
-
全面理解java中的異常處理機制精選
一、java異常總結:異常就是程序運行時出現不正常運行情況1.異常由來:通過java的類的形式對現實事物中問題的描述,並封住成了對象其實就是java對不正常情況描述後的對象體現2.對於問題的劃分有兩種:一種是嚴重的問題,一種是非嚴重的問題對於嚴重的,java通過Error類來...
-
Java開發崗位面試題
為幫助參加Java開發崗位面試的朋友們做好準備,以下是本站小編搜索整理的一份Java集合面試問題40個【附答案】,供參考練習,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!一、Java基礎1、String類為什麼是final的。2、HashMap的源碼,實現原...
-
計算機二級考試Java精選訓練題
下面是應屆畢業生考試網小編搜索整理的計算機二級考試Java精選訓練題,希望對大家有所幫助。[簡答題]本題中,在下畫線上填寫代碼,指定變量b為字節型,變量f為單精度實型,變量l為64位整型。publicclassjaval{publicstaticvoidmain(String[-]args){b=49;f=8.9f;l=0xfedl...