每日一测4(装箱与拆箱)
生活随笔
收集整理的這篇文章主要介紹了
每日一测4(装箱与拆箱)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
1、定義
裝箱:用于在垃圾回收堆中存儲值類型。裝箱是值類型到 object 類型或到此值類型所實現的任何接口類型的隱式轉換。?
拆箱:從 object 類型到值類型或從接口類型到實現該接口的值類型的顯式轉換。
?
2、為什么要裝箱:
(1)調用一個類型為Object的參數的方法,Object可支持任意為型,當你需要將一個值類型(如Int32)傳入時,需要裝箱。?
(2)一個非泛型的容器 ,同樣是為了保證通用,而將元素類型定義為Object。同樣的,要將值類型數據加入容器時,需要裝箱。
?
3、操作:
(1)裝箱:?
對值類型在堆中分配一個對象實例,并將該值復制到新的對象中。按三步進行。?
(1)新分配托管堆內存(大小為值類型實例大小加上一個方法表指針和一個SyncBlockIndex)。?
(2)將值類型的實例字段拷貝到新分配的內存中。?
(3)返回托管堆中新分配對象的地址(對象的引用)。?
?
(2)拆箱:
檢查對象實例,確保它是給定值類型的一個裝箱值。將該值從實例復制到值類型變量中。
4、執行效率:
從原理上可以看出,裝箱時,生成的是全新的引用對象,這會有時間損耗,也就是造成效率降低,?
所以應盡快避免裝箱操作。
轉載于:https://www.cnblogs.com/jolins/p/4153599.html
總結
以上是生活随笔為你收集整理的每日一测4(装箱与拆箱)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript 事件知识集锦
- 下一篇: 【Oracle11gR2 | 学习】pl