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

  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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值