歡迎來到 常識(shí)詞典網(wǎng) , 一個(gè)專業(yè)的常識(shí)知識(shí)學(xué)習(xí)網(wǎng)站!
[ Ctrl + D 鍵 ]收藏本站
答案 1:
首先必須知道Java拷貝的用途:Java-是為了得到一個(gè)對(duì)象,這個(gè)對(duì)象與-前的對(duì)象完全一樣,唯一不同就是它們所處的內(nèi)存地址不相同。對(duì)于java中的一切對(duì)象(除了基本的數(shù)據(jù)結(jié)構(gòu)int、float、string等之外)在進(jìn)行賦值,方法傳遞的時(shí)候,都是一個(gè)內(nèi)存地址的同一個(gè)對(duì)象! 所謂淺拷貝一般就是就是直接調(diào)用對(duì)象的clone()方法,這樣的拷貝,對(duì)于這個(gè)對(duì)象中的基本數(shù)據(jù)類型(int、string、float等)的屬性,是可以得到完全的拷貝,但是對(duì)于這個(gè)對(duì)象里面的非基本數(shù)據(jù)類型(對(duì)象、集合等)的某些屬性,實(shí)際上并沒有進(jìn)行-,而只是進(jìn)行一個(gè)賦值操作而已,也就是說-出來的對(duì)象與原對(duì)象有一部分內(nèi)容的內(nèi)存地址是相同的,這在某些情況下會(huì)造成出錯(cuò)! 由此提出了深拷貝的概念,即覆寫clone()方法,遍歷對(duì)象中的每一個(gè)屬性,采取合適的方式進(jìn)行-即可。例如對(duì)于對(duì)象中的集合,可以遍歷集合,然后構(gòu)造一個(gè)新的集合,重新存儲(chǔ)一遍... 更過關(guān)于Java-的問題詳見Blog:-i.baidu/-wa-l36...答案 2:
Object需要實(shí)現(xiàn)-接口Clonable。在實(shí)現(xiàn)clone方法的時(shí)候,一般這樣做:class MyObject implements Cloneable { Foo member; public void clone(){ MyObject anot-er = new MyObjct(); if (member instanceof Cloneable){ anot-er.member = (Foo)(((Cloneable)member).clone()); } } }}以上僅僅是實(shí)例代碼。答案 3:
淺拷貝和深拷貝的區(qū)別就是在處理對(duì)象引用時(shí),淺拷貝只-引用,而深拷貝會(huì)將引用對(duì)應(yīng)的對(duì)象-一份。深拷貝一般都對(duì)串行化和對(duì)象序列化來實(shí)現(xiàn)。下一篇:VO- 形式的呼叫中心的技術(shù)特點(diǎn)是什么?風(fēng)險(xiǎn)點(diǎn)在哪里? 下一篇 【方向鍵 ( → )下一篇】
上一篇:光明會(huì)真的存在嗎?在-它是怎么樣的? 上一篇 【方向鍵 ( ← )上一篇】
快搜