1、自動裝箱和拆箱的概念
自動裝箱:是基本資料型別在運算的時候,自動轉換成對應的包裝型別。
自動拆箱:是包裝資料型別在參與運算的時候,自動轉換成基本資料型別參與運算。
例如:integer iobj = 3;//自動裝箱為integer
system.out.prinrtln(iobj + 1);自動拆箱為基本資料型別參加運算
。2、裝箱和拆箱的細節:涉及到基本型別的物件快取,
a) integer i1 = 13;
b) integer i2= 13;
c) system.out.prinrtln(i1==i2);
問:裝出來的物件i1,i2是不是同乙個?是。
d) integer i1 = 137;
e) integer i2= 138;
問:裝出來的物件i1,i2是不是同乙個?否。
f) integer i3 = integer.valueof(3);
g) integer i4 = integer.valueof(3);
問:裝出來的物件i1,i2是不是同乙個?是。
原因分析:
如果基本型別的整數要裝箱成integer物件的時候,如果在乙個位元組的範圍內(-128~17),則快取在乙個池裡面。下次如果還要封裝就先到池裡面看有沒有,有的話直接拿來,這樣節約了記憶體空間,因為這些小的整數使用的頻率較高,反覆的出現,如果出現乙個就裝成乙個物件,沒必要。
這是就引入了享元模式。
3、享元模式(flyweight)
有許多的小的物件,有許多屬性相同,把他們變成同乙個物件,不同的屬性變成方法的引數,稱為外部狀態,相同的屬性稱為內部狀態。
4、享元模式的應用:
a) windows中的圖示:
有許多的資料夾,圖示一樣,只是名字不一樣。這樣把相同的圖示搞成同乙個物件,顯示的時候有顯示的標題和顯示的位置。
b) 字母和符號的列印。
黑馬程式設計師 18基本資料型別的自動拆箱與裝箱
android培訓 ios培訓 期待與您交流!一 自動裝箱與拆箱簡介 自動裝箱 integer num1 12 自動拆箱 system.out.println num1 12 基本資料型別的物件快取 integer num1 12 integer num2 12 這塊相等,127都是真的 syste...
Java 基本資料
1 四種整數型別 byte short int long byte 8 位,用於表示最小資料單位,如檔案中資料,128 127 short 16 位,很少用,32768 32767 int 32 位 最常用,231 1 231 21 億 long 64 位 次常用 注意事項 int i 5 5 叫直...
java基礎一 java基本資料型別
目錄 1整型2小數 浮點 型別 3布林型別 4字元型別 整數型別整數型別有 byte,short,int,long 主要區別是 資料大小範圍。byte 占用記憶體 乙個位元組 8位 範圍 128至127 short 占用記憶體 兩個位元組 16位 範圍 32768至32767 int 占用記憶體 四...