关于java当中的浅拷贝
来源:互联网 发布:数据加密软件排行 编辑:程序博客网 时间:2024/05/29 06:58
import java.util.Date;public class User implements Cloneable {/* * 注意,浅拷贝的结果是引用对象拷贝不成功。 */private String username;private String password;private int age;private Date birthdate;private StringBuilder sb;public User(String username, String password, int age, Date birthdate,StringBuilder sb) {super();this.username = username;this.password = password;this.age = age;this.birthdate = birthdate;this.sb = sb;}public StringBuilder getSb() {return sb;}public void setSb(StringBuilder sb) {this.sb = sb;}public User(String username, String password, int age, Date birthdate) {this.username = username;this.password = password;this.age = age;this.birthdate = birthdate;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Date getBirthdate() {return birthdate;}public void setBirthdate(Date birthdate) {this.birthdate = birthdate;}@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}}
浅复制(浅克隆)
被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不
复制它所引用的对象。
这个例子当中Uesr User2 两个对象的值互不影响,但是如果使用user2.getSb()。append()方法的时候就会发现两个值都改变了,就是因为如果这样就是改变的引用的值,而直接new StringBuilder()是给自己新建一个值。
总之浅拷贝是引用复制不成功,克隆对象发生改变,原来的对象也会发生改变。
import java.util.Date;public class test {public static void main(String args[]) throws CloneNotSupportedException {User user = new User("guoxiaoming", "123456", 12, new Date(),new StringBuilder("oldsb"));System.out.println(user.getAge());User user2 = (User) user.clone();user2.setAge(13);user2.setPassword("123");//user2.getSb().append("plus NewSb");user2.setSb(new StringBuilder("NewSb"));System.out.println(user.getAge());System.out.println(user2.getAge());System.out.println(user.getPassword());System.out.println(user2.getPassword());System.out.println(user.getSb());System.out.println(user2.getSb());}}
0 0
- 关于java当中的浅拷贝
- JS当中的拷贝!!!
- OC当中的深拷贝和浅拷贝
- 关于Java当中的RunTime类
- 字符串拷贝当中的问题
- Java中关于list的深拷贝与浅拷贝
- 关于Java当中的接口的总结,一点点心得
- 关于Java当中Class类
- java在eclipse当中关于图片显示的处理
- Java当中计算关于程序运行时间的函数
- Map拷贝 关于对象深拷贝 浅拷贝的问题
- Map拷贝 关于对象深拷贝 浅拷贝的问题
- Map拷贝 关于对象深拷贝 浅拷贝的问题
- Map拷贝 关于对象深拷贝 浅拷贝的问题
- java 当中的集合
- Java当中的线程
- Java当中的数组
- java当中的executor
- 儿童热轧和
- AspNetPager常用属性及一些样式
- mathtype中字母斜体的设置方法
- android.content.res.Resources$NotFoundException: String resource ID #0x1
- 阿里笔试总结
- 关于java当中的浅拷贝
- 当官的法规和
- NGUI常见功能解释
- epoll源码实现分析
- 登录成功 显示 用户名
- Win 8 系统下 MyEclipse 2014版下载安装与配置——Windows J2EE开发安装序列之二
- VMware虚拟机三种网络模式的区别(上篇)
- ASIHTTPRequest和ASIFormDataRequest 区别,GET和POST
- 博客上网站排名优化的6点小失慎得