java 中如何把一个string数组原封不动的赋给另外一个string数组[]

说白了就是克隆一个!!!
2024年11月18日 15:22
有4个网友回答
网友(1):

楼上的方法System.arraycopy(src, pos, dst, pos, length); 是对的
但太简单了哈,自己试了才知道里面参数分别是什么
scr:原数组名
pos:开始复制的原数组的下标
dst:目的数组名
pos:开始接收的目的数组的下标
length:要复制的数组长度,如果这个长度大于了原数组从开始复制数到最后数的数目或目的数组开始接收数到最后数的长度的话会报错的哦~
说得有点复杂哈,举个例子吧:
public class test
{
public static void main(String args[])
{
String s1[]={"1","2","3","4","5","6"};
String s2[]=new String[6];
System.arraycopy(s1,1,s2,2,4);
for(int i=0;i System.out.println(s2[i]);
}
}
其中System.arraycopy(s1,1,s2,2,4);中的4不要大于6-2或6-1,即是要小于等于4了;其结果输出就是
null
null
2
3
4
5
OK,就说这么多了,如果是完全克隆的话,那当然就是
System.arraycopy(s1,0,s2,0,6);

网友(2):

楼上的arraycopy是完全可以的,这里我想展开说arraycopy的源代码情况,arraycopy其实就是java的一个封装方法。我们知道的,s1[]=s2这个写法是错误的,因为这两个还是共用的一个地址。正确的应该是在堆空间中先new一个数组s2,然后用循环,依次把s1的元素赋值给s2,换成代码形式如下:
public class copy{
public static void main(String[] args){
int[] s1 = {1,2,3,4};
int[] s2 = new int[s1.length];
for(int i = 0,i<=s1.length;i++){
s2[i] = s1[i];



网友(3):

System.arraycopy(源数组名, 字符串开始复制位置, 目的数组名, 字符串粘贴位置, 需要复制的字符串长度);

网友(4):

System.arraycopy(src, pos, dst, pos, length);