Java 自動裝箱 自動拆箱和享元模式

2021-08-21 03:39:51 字數 1309 閱讀 3675

// 自動裝箱,例子:把乙個基本資料型別裝成乙個integer物件

integer iobj = 3;

// 自動拆箱,例子:把integer物件拆箱成基本資料型別

system.out.println(iobj + 12);

享元模式是一種軟體設計模式。它使用共享物件,用來盡可能減少記憶體使用量以及分享資訊給盡可能多的相似物件;它適合用於只是因重複而導致使用無法令人接受的大量記憶體的大量物件。通常物件中的部分狀態是可以分享。常見做法是把它們放在外部資料結構,當需要使用時再將它們傳遞給享元。

// 若數值在-128~127之間(一位元組),則會將這些數值物件會快取起來,使用的時候,直接使用已經存在的物件(享元模式)

integer i1 = 10

;integer i2 = 10

;// 輸出i1、i2的記憶體位址

system.out

.println("i1:"+system.identityhashcode(i1));

system.out

.println("i2:"+system.identityhashcode(i2));

// 當數值大於127或小於-128時,則這些數值會建立新的物件,通過輸出物件在記憶體中的位址來驗證

integer i3 = 128

;integer i4 = 128

;system.out

.println("i3:"+system.identityhashcode(i3));

system.out

.println("i4:"+system.identityhashcode(i4));

integer i5 = -129

;integer i6 = -129

;system.out

.println("i5:"+system.identityhashcode(i5));

system.out

.println("i6:"+system.identityhashcode(i6));

public

class

autobox

}// 執行結果

// 15

// i1:366712642

// i2:366712642

// i3:1829164700

// i4:2018699554

// i5:1311053135

// i6:118352462

裝箱和拆箱,自動裝箱和自動拆箱

以integer的建立為例。裝箱 把基本資料型別轉換成包裝類物件 int integer integer num1 new integer 17 拆箱 把乙個包裝類的物件,轉換成基本型別的變數 integer int int num2 num1.intvalue 自動裝箱 integer num3 ...

java自動裝箱拆箱

因為看到幾個很有意思的面試題,關於裝箱拆箱的,錯得一頭霧水首先對於自動裝箱拆箱的定義,其實看這個你就明白了 integer i 100 被自動轉換成integer i integer.valueof 100 就叫做自動裝箱。而拆箱呢,比如 integer i1 1 integer i2 2 int ...

java自動裝箱拆箱

基本資料型別的自動裝箱 autoboxing 拆箱 unboxing 是自j2se 5.0開始提供的功能。一般我們要建立乙個類的物件例項的時候,我們會這樣 class a new class parameter 當我們建立乙個integer物件時,卻可以這樣 integer i 100 注意 不是 ...