日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java,对象的克隆

發布時間:2024/1/1 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java,对象的克隆 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這次寫的是有關java對象的克隆

首先是 java對象的假克隆

對于基本類型我們可以用“=”來進行克隆,此時對于兩個變量除了相等沒有其他的關系

但對于引用類型來說就不能簡單的使用“=”來進行克隆,這樣java的內存空間使用有關

對于引用變量而言,使用“=”將修改引用,而不是復制堆中的對象。此時兩個引用對象

將指向同一個對象。示例代碼如下:

1)創建一個Employer類

2)創建一個Demo類進行輸出實驗

3)結果可以自行運行

備注;如果應用類型是不可變的,如String類則不用進行深克隆,即你可以把String類型像基本類型看待

/** 定義兩個成員變量和兩個方法,get 和 set*/ public class Employer {String name;int age;public Employer(String name,int age){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;}@Overridepublic String toString() {// TODO Auto-generated method stub//return super.toString();return "姓名:"+name+" 年齡 "+age;} } public class Demo {public static void main(String args[]) {System.out.println("克隆前");Employer e1=new Employer("林青霞", 58);System.out.println("雇主一的信息");System.out.println(e1);System.out.println("克隆后");Employer e2=e1;e2.setName("王祖賢");e2.setAge(48);System.out.println("雇主1的信息");System.out.println(e1);System.out.println("雇主2的信息");System.out.println(e2);} }


下面講解的是淺克隆

首先是定義的類需要繼承Cloneable類,并重寫其中的clone()方法

1)首先定義一個Love類

2)創建一個CopyOfEmployer類繼承Cloneable ,重寫clone()方法

3)創建Demo測試類,測試CopyOfEmployer類

示例代碼如下

public class Love {public String people;public int number;public String getPeople() {return people;}public void setPeople(String people) {this.people = people;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}@Overridepublic String toString() {// TODO Auto-generated method stubStringBuilder sb=new StringBuilder("喜歡的人:");sb.append(people).append(" 喜歡的數字:").append(number);return sb.toString();} }

CopyOfEmployer類

public class CopyOfEmployer implements Cloneable{String name;int age;Love love;public Love getLove() {return love;}public void setLove(Love love) {this.love = love;}@Overridepublic CopyOfEmployer clone(){// TODO Auto-generated method stubCopyOfEmployer coe=null;try {coe=(CopyOfEmployer) super.clone();} catch (CloneNotSupportedException e) {// TODO Auto-generated catch blocke.printStackTrace();} //實現淺克隆;//coe.love=(Love) love.clone();return coe;}public CopyOfEmployer(String name,int age,Love love){this.name=name;this.age=age;this.love=love;}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;}@Overridepublic String toString() {// TODO Auto-generated method stub//return super.toString();return "姓名:"+name+" 年齡 "+age+" 喜愛的東西:"+love;} }

Demo測試類,下面只是寫出了main中的內容

Love love=new Love();love.setNumber(18);love.setPeople("husband");System.out.println("克隆前");CopyOfEmployer e1 = new CopyOfEmployer("林青喜", 58,love);System.out.println("雇主一的信息");System.out.println(e1);System.out.println("克隆后");CopyOfEmployer e2 = null;e2 = e1.clone();e2.setName("王祖賢");e2.setAge(48);e2.getLove().setNumber(16);e2.getLove().setPeople("小鮮肉");System.out.println("雇主1的信息");System.out.println(e1);System.out.println("雇主2的信息");System.out.println(e2);


最后要講的是深克隆

其實就是讓Love類也繼承Cloneable類,因為只是淺克隆的話,Love類并沒有被克隆島,所以修改如下

Love類

public class Love implements Cloneable{public String people;public int number;@Overrideprotected Love clone() {// TODO Auto-generated method stubLove love=null;try {love=(Love) super.clone();} catch (CloneNotSupportedException e) {// TODO Auto-generated catch blocke.printStackTrace();}return love;}public String getPeople() {return people;}public void setPeople(String people) {this.people = people;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}@Overridepublic String toString() {// TODO Auto-generated method stubStringBuilder sb=new StringBuilder("喜歡的人:");sb.append(people).append(" 喜歡的數字:").append(number);return sb.toString();} }

其他的類和淺克隆中的一樣,大家可以自行測試

最后希望大家給予我良好的修改意見,謝謝!

總結

以上是生活随笔為你收集整理的java,对象的克隆的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。