您的位置:首页 > 编程语言 > Java开发

<Java>Java数组的深拷贝与浅拷贝

2014-11-30 23:34 344 查看
1.Java数组深拷贝,也就是引用传递,影响原来的值,可以直接进行赋值:

int arraySource[] = {1,2,3};

int length = arraySource.length;

int arrayDest[] = new int[length];

arrayDest = arraySource;

对arrayDest的操作影响arraySource的值。

2.Java数组浅拷贝,值传递,不影响原来的值:

system.arrayCopy(Object src,int srcPos,Object dest,int destPos,int length);

system.arrayCopy(arraySource,0,arrayDest,0,length);

对arrayDest的操作不影响arraySource的值。

另有一种clone方法,未曾研究。

栗子

public class FartherJava {
public FartherJava() {
buf =new short[3];
for(short i = 0;i<3;i++)
{
buf[i] = i;
}
private short[] buf;

public short[] retArray()
{

return buf;
}

public int getArrayLength()
{
return buf.length;
}

public void printArray()
{
System.out.println();
System.out.println("original array:");
for (short i : buf) {
System.out.print(i);
}
}

public static void main(String args[]) {
FartherJava m = new FartherJava();
short[] getArray = new short[10];
getArray = m.retArray();
int len = m.getArrayLength();
getArray[0] = 4;
System.out.println("getArray:");
for(short s : getArray) {
System.out.print(s);
}
m.printArray();
System.out.println();

short[] getAy = new short[len];
System.arraycopy(m.retArray(), 0, getAy, 0, 3);
getAy[0] = 3;
System.out.println("getAy:");
for (short s : getAy) {
System.out.print(s);
}
m.printArray();
}
}


输出:

getArray:

412

original array:

412

getAy:

312

original array:

412
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: