java复制数组的案例

  介绍

小编给大家分享一下java复制数组的案例,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!

1,数组长度相等

假设num和nums1是长度相等的两个数组。

1.1,用num=nums1;

赋值前

癹ava复制数组的案例"

赋值后

癹ava复制数组的案例"

num创建的时候在堆里面创建一块内存区域用来存储,num指向这个内存地址A.nums1创建后指向b .

现在令num=nums1;则把num1的地址(或者说是引用)赋给了num,所以num也指向了b两个数组都指向堆中同一个内存区域,他们是共享里面的数据。

1.2,为循环

为(int i=0;我& lt;nums1.length;我+ +){   num[我]=nums1[我];   }

循环前

癹ava复制数组的案例"

循环后

癹ava复制数组的案例"

成功改变num数组内部内容,而没有改变其引用。

1.3,数组类

方法1:复制指定数组至指定长度

num=Arrays.copyOf (nums1 5);

方法2:复制指定数组的指定长度

num=Arrays.copyOfRange (nums1 0 5);

两种方法最后的索引都可以在数组的长度,然后后面的都会补上0。

两种方法都可以成功复制数组,而且我们发现原数组num从524变成了526,说明这两种复制方法是创建了一个新数组,然后用等号左边的数组指向这个新数组。

癹ava复制数组的案例"

1.4,系统。arraycopy方法

系统。targetArray arraycopy (originalArray, 0, 0, originalArray.length);

癹ava复制数组的案例"

可以看出这个方法类似于我们的对循环,是直接改原来数组的内容,没有改引用。

2,数组长度不等

赋值法成功的循环要注意越界问题,会报java.lang.ArrayIndexOutOfBoundsExceptionArrays类法成功注意越界问题,会报. lang。ArrayIndexOutOfBoundsException

其他:

给定一个数组num,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。

//思路:设置一个指数,表示非0数的个数,循环遍历数组,//如果不是0,将非0值移动到第指数位置,然后指数+ 1//遍历结束之后,索引值表示为非0的个数,再次遍历,从指数位置后的位置此时都应该为0   公共空间moveZeroes (int [] num) {   如果(num==null | | num。长度& lt;=1) {   返回;   }   int指数=0;   for (int i=0;我& lt;nums.length;我+ +){   如果(num[我]!=0){   num(指数)=num[我];   指数+ +;   }   }      for (int i=指数;我& lt;nums.length;我+ +){   num[我]=0;   }   }

看完了这篇文章,相信你对java复制数组的案例有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

java复制数组的案例