黑马程序员技术交流社区

标题: colone方法怎么用,我试了如下三种方法都失败了 [打印本页]

作者: 我自信我很牛    时间: 2013-3-16 21:00
标题: colone方法怎么用,我试了如下三种方法都失败了
本帖最后由 烟磊磊 于 2013-3-16 23:54 编辑
  1. class Demo2
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Student s1=new Student();
  6.                 //Student s2=s1.clone();
  7.                 //Object s2=s1.clone();
  8.                 Student s2=(Object)s1.clone();
  9.                 System.out.println("Hello World!");
  10.         }
  11. }
  12. class Student
  13. {
  14. }
  15. //注释掉的是我试出来的三种方法
复制代码

作者: 彭颖    时间: 2013-3-16 22:11
本帖最后由 彭颖 于 2013-3-16 22:13 编辑

用法举个简单例子看一下怎么用
  1. public class A implements Cloneable {
  2.         public String name[];
  3.         
  4.         public A(){
  5.                 name=new String[2];
  6.         }

  7.         public Object clone() {
  8.                 A o = null;
  9.                 try {
  10.                         o = (A) super.clone();
  11.                 } catch (CloneNotSupportedException e) {
  12.                         e.printStackTrace();
  13.                 }
  14.                 return o;
  15.         }
  16. }
复制代码
-------------------------
然后测试
  1. A a1=new A();
  2. A a2=new A();
  3. a1.name[0]="a";
  4. a1.name[1]="1";
  5. a2=(A)a1.clone();
  6. a2.name[0]="b";
  7. a2.name[1]="1";
  8. System.out.println("a1.name="+a1.name);
  9. System.out.println("a1.name="+a1.name[0]+a1.name[1]);
  10. System.out.println("a2.name="+a2.name);
  11. System.out.println("a2.name="+a2.name[0]+a2.name[1]);
复制代码
-----------------
结果:
  1. a1.name=[Ljava.lang.String;@757aef
  2. a1.name=b1
  3. a2.name=[Ljava.lang.String;@757aef
  4. a2.name=b1
复制代码
----------------
a1.name,a2.name的hash值都是@757aef,也就是说这种clone对name数组是clone他们的地址
作者: 黄玉昆    时间: 2013-3-16 22:51
http://bbs.itheima.com/thread-37902-1-1.html
这个帖子有关于克隆的一些知识,希望对你有帮助




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2