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