淺談Java中的克隆close()和賦值引用的區(qū)別
更新時間:2016年09月30日 11:33:22 投稿:jingxian
下面小編就為大家?guī)硪黄獪\談Java中的克隆close()和賦值引用的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
學(xué)生類Student:
package 克隆clone; /*要克隆必須實現(xiàn)這個借口:Cloneable,以標(biāo)記這個對象可以克隆 Cloneable:此類實現(xiàn)了 Cloneable 接口,以指示 Object.clone() 方法可以合法地對該類實例進(jìn)行按字段復(fù)制。 這個接口是標(biāo)記接口,告訴我們實現(xiàn)該接口的類就可以實現(xiàn)對象的復(fù)制了。 */ public class Student implements Cloneable { private String name; private int age; public Student() { } public Student(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } // 重寫克隆方法子列才可以調(diào)用 @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } }
測試克隆學(xué)生類:
package 克隆clone; /* * protected void finalize():當(dāng)垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調(diào)用此方法。用于垃圾回收,但是什么時候回收不確定。 * protected Object clone():創(chuàng)建并返回此對象的一個副本。 * A:重寫該方法 * * Cloneable:此類實現(xiàn)了 Cloneable 接口,以指示 Object.clone() 方法可以合法地對該類實例進(jìn)行按字段復(fù)制。 * 這個接口是標(biāo)記接口,告訴我們實現(xiàn)該接口的類就可以實現(xiàn)對象的復(fù)制了。 */ public class StudentClone { public static void main(String[] args) throws CloneNotSupportedException { //創(chuàng)建學(xué)生對象 Student s = new Student(); s.setName("林青霞"); s.setAge(27); //克隆學(xué)生對象 Object obj = s.clone(); Student s2 = (Student)obj; System.out.println("---------"); System.out.println(s.getName()+"---"+s.getAge()); System.out.println(s2.getName()+"---"+s2.getAge()); //以前的做法 Student s3 = s; System.out.println(s3.getName()+"---"+s3.getAge()); System.out.println("---------"); //其實是有區(qū)別的 s3.setName("劉意"); s3.setAge(30); System.out.println(s.getName()+"---"+s.getAge()); System.out.println(s2.getName()+"---"+s2.getAge()); System.out.println(s3.getName()+"---"+s3.getAge()); System.out.println("---------"); //把克隆的改一下呢? s2.setName("克隆改的名稱"); s2.setAge(66); System.out.println(s.getName()+"---"+s.getAge()); System.out.println(s2.getName()+"---"+s2.getAge()); System.out.println(s3.getName()+"---"+s3.getAge()); //也就是說把一個對象的引用賦值給一個引用,當(dāng)這個引用發(fā)什么該改變的時候,同一個引用指向的對象會發(fā)生改變,但是克隆的不會變化, //把克隆的對象改變他的一些屬性,那么也不會影響到其他的對象的值的改變 } }
以上就是小編為大家?guī)淼臏\談Java中的克隆close()和賦值引用的區(qū)別的全部內(nèi)容了,希望對大家有所幫助,多多支持腳本之家~
相關(guān)文章
JavaWeb實體類轉(zhuǎn)為json對象的實現(xiàn)方法
這篇文章主要介紹了JavaWeb實體類轉(zhuǎn)為json對象的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Spring Boot打開URL出現(xiàn)signin問題的解決
這篇文章主要介紹了Spring Boot打開URL出現(xiàn)signin問題的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12Spring boot + mybatis + Vue.js 
這篇文章主要介紹了Spring boot + mybatis + Vue.js + ElementUI 實現(xiàn)數(shù)據(jù)的增刪改查實例代碼(二),非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-05-05詳解springboot+aop+Lua分布式限流的最佳實踐
這篇文章主要介紹了詳解springboot+aop+Lua分布式限流的最佳實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06IDEA2020 1.1中Plugins加載不出來的問題及解決方法
這篇文章主要介紹了IDEA2020 1.1中Plugins加載不出來的問題,本文還給大家提到了IDEA 2020.1.1 找不到程序包和符號的問題,感興趣的朋友跟隨小編一起看看吧2020-06-06