展开全部
楼上的方法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<s1.length;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);
但太简单了哈,自己试了才知道里面参数分别是什么
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<s1.length;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);
展开全部
楼上的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];
}
}
}
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];
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
System.arraycopy(源数组名, 字符串开始复制位置, 目的数组名, 字符串粘贴位置, 需要复制的字符串长度);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
System.arraycopy(src, pos, dst, pos, length);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询