易截截图软件、单文件、免安装、纯绿色、仅160KB

java clone 解析

转自:http://ttitfly.javaeye.com/blog/155422
1.java里的clone分为:
A:浅复制(浅克隆): 浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。
b:深复制(深克隆):深复制把要复制的对象所引用的对象都复制了一遍。
Java中对象的克隆,为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。必须要遵循下面三点
1.在派生类中覆盖基类的clone()方法,并声明为public【Object类中的clone()方法为protected的】。
2.在派生类的clone()方法中,调用super.clone()。
3.在派生类中实现Cloneable接口。
Object类里的clone方法是浅复制(浅克隆)
1.浅复制(浅克隆)的例子如下: 
package com.test;
//浅复制(浅克隆): 浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。
//深复制(深克隆):深复制把要复制的对象所引用的对象都复制了一遍。
//
//Java中对象的克隆,为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。必须要遵循下面三点
//1.在派生类中覆盖基类的clone()方法,并声明为public【Object类中的clone()方法为protected的】。
//2.在派生类的clone()方法中,调用super.clone()。
//3.在派生类中实现Cloneable接口。
//[color=red]Object类里的clone方法是浅复制(浅克隆)[/color]public class CloneTest {
public static void main(String[] args) throws Exception{
//teacher对象将被clone出来的Student对象共享.
Teacher teacher = new Teacher();
teacher.setAge(40);
teacher.setName("Teacher zhang");

Student student1 = new Student();
student1.setAge(20);
student1.setName("zhangsan");
student1.setTeacher(teacher);

//复制出来一个对象student2
Student student2 = (Student)student1.clone();
System.out.println(student2.getAge());
System.out.println(student2.getName());


System.out.println("~~~~~~~~~~~~~~~~~~~~~~");
System.out.println(student1.getTeacher().getAge());
System.out.println(student1.getTeacher().getName());


//修改student2的引用对象
student2.getTeacher().setAge(50);
student2.getTeacher().setName("Teacher Li");

System.out.println("~~~~~~~~~~~~~~~~~~~~~~");
System.out.println(student1.getTeacher().getAge());
S


相关文档:

java servlet

最近,深刻的认识到, 学习,不仅要多看书,还要时不时的总结一下:
     用JSP + Servlet + JavaBean开发项目, 原以为是比较糟糕的事, 因为,JSP 页面中 总会被嵌入很多 java代码,其实我一直觉得,既然有了 struts等表示层框架,就不要用Servlet 来做控制器了, 可是最近,明白了,  仔 ......

浅析Java web程序之客户端和服务器端交互原理

浅析Java web程序之客户端和服务器端交互原理
近来一直在思考一个疑问,为什么在用struts框架开发的时候FormBean都须要序列化,即实现Java.io.Serializable接口,本着勤学好问的精神我Google了下对象序列化方面的文章,虽然大体明白了如何做,但是还是没有搞清楚为什么要这样做;结尾我想处理一个疑问要找疑问的根源和本质 ......

Java连接sqlite

1.去网站http://files.zentus.com/sqlitejdbc/下载sqlitejdbc.根据自已需要,下载sqlitejdbc.(sqlitejdbc有两个版本,一种是pure的一种是native的。native的速度快。它放在**-bin.tgz里。我下的就是这种sqlitejdbc-v056-bin.tgz)
2. 下载后解压sqlitejdbc-v056-bin.tg ,有以下几个文件: libsqlitejdbc.so,sqlitejdbc.d ......

Java 字符串,byte[],16进制的字符串互转

在调试的时候,如果要显示byte的值是否与预期一致,一般转换为16进制的字符串,或者使用base64转换后,然后显示出来。
/**
* 字符串转换成十六进制字符串
*/
public static String str2HexStr(String str) {
char[] chars = "0123456789ABCDEF".toCharArray();
StringBuilder sb = new StringBuilder(""); ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号