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