java中clone的用法,clone是哪个类的方法
java中的clone()方法怎么使用呢
浅拷贝和深拷贝之间的区别:浅拷贝是指将对象中的数值类型的字段拷贝到新的对象中,而对象中的引用型字段则指复制它的一个引用到目标对象。如果改变目标对象中引用型字段的值他将反映在原是对象中,也就是说原始对象中对应的字段也会发生变化。深拷贝与浅拷贝不同的是对于引用的处理,深拷贝将会在新对象中创建一个新的和原是对象中对应字段相同(内容相同)的字段,也就是说这个引用和原是对象的引用是不同的,我们在改变新对象中的这个字段的时候是不会影响到原始对象中对应字段的内容.
你的疑问应该是浅拷贝与深拷贝的不同造成的。
toString重写应该算是一种良好习惯,写一般的常用类最好重写。这里的toString没什么特别的意思,没有也无所谓。
java clone方法
可以用this啊,应为你调用this.clone是调用的当前类的clone方法,所以你在调用object的clone时就要写super了,你把你employee的clone方法名换个别的名字
public Employee cloneDemo() throws CloneNotSupportedException
{
return (Employee)this.clone();
}
就可以了
java代码 clone()函数的作用是什么?
从楼主对回答的追问上发现,楼主的连JAVA基本的语法都很差啊。=号是赋值运算符,不是比较。
double[] vectorValue;
vectorValue = vectorValue.clone();
这个段代码执行肯定报错了。但他还的意思还是很明确的。
首先:double[] vectorValue; ? 这个是定义了一个double类型的数组变量vectorValue。
其次:vectorValue = vectorValue.clone(); ?//这个是将vectorValue 克隆一份,赋值给自己。也就是说vectorValue变量指向了新的一块内存区域。
举个例子可能更能说明问题。
public?class?TestMain?implements?Cloneable?{
private?int?i?;
public?TestMain(int?i){
this.i?=?i?;
}
@Override
protected?Object?clone()?{
//?TODO?Auto-generated?method?stub
return?new?TestMain(this.getI()+1);
}
public?int?getI()?{
return?i;
}
/**
?*?@param?args
?*/
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
TestMain?tm1?=?new?TestMain(1);
TestMain?tm2??=?tm1;
tm1?=?(TestMain)tm1.clone();
System.out.println(tm1.getI());?//tm1指向的是通过clone()方法创建的新的对象的地址,i的值已经是2了。
System.out.println(tm2.getI());?//tm2指向的还是tm1创建时的地址,i的值为1
}
}