JAVA类C++指针使用

来源:互联网 发布:lte中mr优化案例 编辑:程序博客网 时间:2024/06/06 18:16

        一开始学习的是C++,然后学习java时就了解到java是不存在指针这个东西的,然后就想到那java里数据的对应关系怎么搞呢?之后就糊里糊涂地过去了,现在看到clone方法,就简单从clone方法了解了一下java的“类指针”。

基础知识:java对对象的处理和基本类型数据的处理不一样,java中入口对象参数是缺省为引用调用,也就是说仅仅传递了对象的一个引用,而不是创建了一个新对象。因此对方法中对对象进行处理时,就是在修改原对象。顺便总结——List<Map> 循环取值修改时也是直接修改了list中的对象。

java中一般使用clone方法来复制对象,首先需要知道想要使用clone方法的类必须要implement Cloneable抽象类。 clone主要有三种:浅复制、深度复制、clone彻底

浅复制(影子clone):复制类中的基本类型数据。

public class Test implement Cloneable{

public String name;

public Object clone(){

Test test=null;

try{

test=(Test)super.clone();

}catch(Exception e){

e.printStackTrace();

}

return test;

}

深度复制:如果是数组或者是复杂类型就需要重定义复制过程。不然就相当与引用,共用一个数据。

如上面的例子,多一个String[]  nameArray[10];那就需要在调用父方法后使用 

test.nameArray=(String[])nameArray.clone();

clone彻底:当存在存储对象的容器时,如vector。eg:Vector<B>  vector;

test.vector=new Vector<B>();

for(int i=0;i<vector.size();i++){

B temp=vector.get(i).clone();

test.vector.add(temp);

}


0 0