封裝是將物件的資訊隱藏在物件內部,禁止外部程式直接存取物件內部的屬性和方法。
1.基本型別只能依值傳遞,而每個基本型別對應的封裝類別是依照引用傳遞的。
2.從效能上說java中的基本類型是在堆疊上創建的,而所有的物件類型都是在堆疊上創建的,(物件的引用在堆疊上創建)。例如 Integer i=new Integer(10); 其中new Integer()是在堆疊上建立的,而他的參考Integer i則是在堆疊上。封裝類別的出現,是為了更方便的使用一些基本型別不具備的方法,例如 valueOf(),以toString()等等。還有你如果想傳遞一個int物件的引用,而不是值,那隻能用封裝類別。
在堆疊上分配記憶體的呼叫效率和在堆上分配記憶體的效率差太多了。雖然在堆疊上分配記憶體效率高,不過在堆疊上分配記憶體有記憶體外洩的問題。 (這是一個平庸程式設計師基本上解決不了的問題...)java用了一種很天才的方法提高了在堆上分配記憶體的效率,儘管如此,java還是慢。他不太可能達到向c 那麼快,儘管他一直在承諾總有一天虛擬機會和機器碼速度一樣快。
JDK5.0開始可以自動封包了,也就是基本資料可以自動封裝成封裝類別,基本資料型別的好處就是速度快(不涉及到物件的建構和回收),封裝類別的目的主要是更好的處理資料之間的轉換,方法很多,用起來也方便。
當然,封裝類型的傳遞是引用傳遞,例如
Integer a = new Integer(1);
表示一個Integer類型的引用a引用了一塊內存,這塊內存中的數據是1; 而a中所存的則是這區塊記憶體的引用(位址),把a傳給別的方法或物件時,則是把a的引用傳遞過去了。
類型之間的轉換:
String b = "123456"; int c = Integer.parseInt(b);
表示把字串123456轉成整數數字,其中parseInt是靜態方法,可以直接使用
還有一點,在某些場合,需要用到封裝類,例如一個集合List,它只能往裡面添加對象,也就是Object,那麼直接存數字肯定是不行的,則需要將數字封裝成封裝類型對象再存到該List中,如
List list = new ArrayList(); list.add(new Integer(1)); list.add(new Integer(2)); list.add(new Integer(3)); list.add(new Integer(4));
JDK5.0以後可以自動數據包,所以可以簡寫成
List list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4);
#相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
以上是java中封裝的實作步驟的詳細內容。更多資訊請關注PHP中文網其他相關文章!