這個是jdk1.5以后才引入的新的內容,作為秉承發表是最好的記憶,毅然決定還是用一篇博客來代替我的記憶:
java語言規范中說道:在許多情況下包裝與解包裝是由編譯器自行完成的(在這種情況下包裝成為裝箱,解包裝稱為拆箱);
其實按照我自己的理解自動裝箱就可以簡單的理解為將基本數據類型封裝為對象類型,來符合java的面向對象;例如用int來舉例:
//聲明一個Integer對象
Integer num = 10;
//以上的聲明就是用到了自動的裝箱:解析為
Integer num = new Integer(10);以上就是一個很好的體現,因為10是屬于基本數據類型的,原則上它是不能直接賦值給一個對象Integer的,但jdk1.5后你就可以進行這樣的聲明,這就是自動裝箱的魅力
自動將基本數據類型轉化為對應的封裝類型。成為一個對象以后就可以調用對象所聲明的所有的方法
自動拆箱:故名思議就是將對象重新轉化為基本數據類型:
//裝箱
Integer num = 10;
//拆箱
int num1 = num;自動拆箱有個很典型的用法就是在進行運算的時候:因為對象時不恩直接進行運算的,而是要轉化為基本數據類型后才能進行加減乘除
Integer num = 10;
//進行計算時隱含的有自動拆箱
System.out.print(num--);哈哈 應該感覺很簡單吧,下面我再來講點稍微難點的,
//在-128~127 之外的數
Integer num1 = 297; Integer num2 = 297;
System.out.println("num1==num2: "+(num1==num2));
// 在-128~127 之內的數
Integer num3 = 97; Integer num4 = 97;
System.out.println("num3==num4: "+(num3==num4)); 打印的結果是:num1==num2: false num3==num4: true
很奇怪吧:這就歸結于java對于Integer與int的自動裝箱與拆箱的設計,是一種模式:叫享元模式(flyweight)
為了加大對簡單數字的重利用,java定義:在自動裝箱時對于值從
主站蜘蛛池模板:
浪卡子县|
宝山区|
于都县|
鹿泉市|
会理县|
临汾市|
通城县|
宝鸡市|
邢台市|
沂南县|
和政县|
朝阳市|
沙河市|
沐川县|
益阳市|
黄浦区|
临沂市|
锦屏县|
平和县|
松滋市|
淅川县|
金山区|
鱼台县|
乡宁县|
侯马市|
灌南县|
南丹县|
富宁县|
阿克陶县|
武陟县|
白水县|
商南县|
昂仁县|
通城县|
司法|
资兴市|
郧西县|
遂川县|
百色市|
东丽区|
莫力|