`
wgq837051
  • 浏览: 86031 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java中深复制与浅复制

阅读更多

java的类型,java的类型分为两大类,一类为primitive,如int,另一类为引用类型,如String,Object等等。
java引用类型的存储,java的引用类型都是存储在堆上的。

java的浅复制在复制时,对于原始类型的变量,在堆上为其分配一块区间,对于引用类型,在堆上为其对象的引用分配一块区间,当对复制的引用进行改变时,改变的是对象的值,被复制的引用值也发生了变化。深复制对原始类型的操作与浅复制一样,对于引用类型,其即对对象的引用进行复制,也对对象本身进行复制,当复制的引用值发生变化时,被复制的引用值没有发生变化,实现了深复制。

深复制的操作如下所示:

class User implements Cloneable {   
    String name;   
    int age;   
  
    @Override  
    public User clone() throws CloneNotSupportedException {   
        return (User) super.clone();   
    }   
}   
  
class Account implements Cloneable {   
    User user;   
    long balance;   
  
    @Override  
    public Account clone() throws CloneNotSupportedException {   
        Account account = null;   
  
        account = (Account) super.clone();   
        if (user != null) {   
            account.user = user.clone();   
        }   
  
        return account;   
    }   
}  

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics