java中的clone()方法的研究---(3)如何编写正确的clone()方法:基本数据类型
来源:互联网 发布:网络装备交易排行榜 编辑:程序博客网 时间:2024/06/06 09:34
先来看看一个自定义Object,它里面的属性都有啥:
- 基本数据类型
- Wrapper Class(基本数据类型的包装类型)
- String
- StringBuffer, StringBuilder
- Java提供的其他类型
- Date
- Timestamp
- Array
- Collection
- 子自定义Object类型
一:基本数据类型:不是对象的类型,所以基本数据类型永远都是深克隆。
基本数据类型在赋值的时候,永远都是传值,而不是传引用。
double m = 4;// 此时, 给变量m,开辟了8bytes的内存空间存储double n = m;// 此时也会,给变量n,开辟新的8bytes内存空间
那么哪些是基本数据类型,这些基本数据类型又占用多少内存空间呢:
什么是默认的clone()方法:见Person类里面的clone()方法
自定义类Person(之后我会不断地,往里面添加各种类型的属性)
package tt.vo;public class Person implements Cloneable {// 基本数据类型private int age;@Overridepublic Person clone() throws CloneNotSupportedException {Person p = (Person) super.clone();return p;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Person [age=" + age + "]";}}
---------------------------------------------------------------下面开始测试了-----------------------------------------------------------------------------
测试类TestMain:
package tt;import tt.vo.Person;public class TestMain {public static void main(String[] args) throws CloneNotSupportedException {// initialize Person pPerson p = new Person();p.setAge(18);System.out.println("p:" + p);Person pclone = p.clone();System.out.println("pclone:" + pclone);}}
debug截图:
通过debug可以发现:
- p和pclone的id不一样,说明p和pclone分别指向了两个不同的Person对象
- Person对象只有一个属性(int age)
- 基本数据类型在debug时候是没有id的(在这里,可见基本数据类型和对象类型的区别哦)
下面修改一下测试类TestMain:
package tt;import tt.vo.Person;public class TestMain {public static void main(String[] args) throws CloneNotSupportedException {// initialize Person pPerson p = new Person();p.setAge(18);System.out.println("p:" + p);Person pclone = p.clone();System.out.println("pclone:" + pclone);System.out.println("-------------after set-------------------");p.setAge(180);System.out.println("p:" + p);System.out.println("pclone:" + pclone);}}
debug截图:
通过debug可以发现:
- p.setAge(180); 之后,仅仅是p.age的value更改了,
- pclone.age的value保持不变
--------------------------------------------总结------------------------------------------------------------------
总结,一个自定义的Object:
- 在编写clone()方法的时候,针对基本数据类型属性,不用特殊处理。
- 使用默认的clone()方法即可。
- 在调用默认的clone()方法时候,这些基本数据类型属性都会成功的深克隆。
- 所以:一个自定义的Object,针对基本数据类型属性,使用默认的clone()方法即可。
0 0
- java中的clone()方法的研究---(3)如何编写正确的clone()方法:基本数据类型
- java中的clone()方法的研究---(4)如何编写正确的clone()方法:Wrapper Class
- java中的clone()方法的研究---(5)如何编写正确的clone()方法:String类型
- java中的clone()方法的研究---(6)如何编写正确的clone()方法:StringBuffer,StringBuilder
- java中的clone()方法的研究---(7)如何编写正确的clone()方法:Date, Timestamp
- java中的clone()方法的研究---(8)如何编写正确的clone()方法:数组类型
- java中的clone()方法的研究---(9)如何编写正确的clone()方法:Collection
- java中的clone()方法的研究---(10)如何编写正确的clone()方法:子自定义Object类型
- java中的clone()方法的研究---(1)自定义的类如何才可以被clone
- Java克隆方法的研究(clone)
- java 的clone方法
- Java的clone方法
- java的clone方法
- Java的Clone方法
- Java的clone方法
- Java的clone方法
- Java的clone方法
- Java的clone方法
- 你真的了解:IIS连接数、IIS并发连接数、IIS最大并发工作线程数、应用程序池的队列长度、应用程序池的...
- 并查集+最小生成树_HDU_1102
- 什么是NP问题,NP-complete和NP-hard问题.
- python+reportlab实战:生成一个带表格图片的PDF
- linux下文件夹的创建、复制、剪切、重命名、清空和删除
- java中的clone()方法的研究---(3)如何编写正确的clone()方法:基本数据类型
- EditText在不同场景下调用软键盘
- VTK中创建圆柱体
- sys和system 用户、sysdba和sysoper系统权限、sysdba和dba角色的区别
- C++类的成员函数、非成员函数和友元函数
- 马哥linux公开课–Linux运维架构师成长必经之路
- RabbitMQ 安装配置与管理&整理篇
- Setup phpmyadmin on ubuntu 12.04 64bit
- wget 命令