java中的arraycopy问题 10

int[][]intArray={{1,2},{1,2,3},{3,4}};int[][]intArrayBak=newint[3][];System.arraycopy... int[][] intArray = {{1,2},{1,2,3},{3,4}};
int[][] intArrayBak = new int[3][];
System.arraycopy
(intArray,0,intArrayBak,0,intArray.length);
intArrayBak[2][1] = 100;

for(int i = 0;i<intArray.length;i++){
for(int j =0;j<intArray[i].length;j++){
System.out.print(intArray[i][j]+" ");
}
System.out.println();
} 程序执行intArrayBak[2][1] = 100;是把目标数组赋值,那么源数组是否也改变了?大侠们最好帮我把内存分析下,用arraycopy后,是目标数组和源数组指向同一个引用还是各自都有一个引用,我是初学者,希望java的大侠们伸下援助之手
展开
 我来答
不一定是飞机
2011-08-24 · TA获得超过827个赞
知道小有建树答主
回答量:270
采纳率:100%
帮助的人:323万
展开全部
System.arraycopy是native的方法,所以无法得知
不过既然是arraycopy,自然是复制数组的元素

但是请你注意,你的数组元素是数组,也就是说是引用类型。
intArray 和intArrayBak 是两个数组,但是他们的元素是指向同一个的:
System.out.println(intArray[2]==intArrayBak[2]);
结果为true

别被2元数组迷惑,它只不过是一个元素为数组的数组而已
手机用户27922
2011-08-24 · TA获得超过239个赞
知道小有建树答主
回答量:645
采纳率:0%
帮助的人:444万
展开全部
System.arraycopy()这个函数没有返回内容,
你让System.out.println()去输出,没有内容,它怎么输出?

你把程序这样改:
HelloWorld{
public static void main(String [] args){
System.out.println("欢迎来到机器世界!");
String a="欢迎来到机器世界!";
System.out.println(a);
int[] b=;
int[] c=;
System.arraycopy(c,0,b,0,3);
System.out.println(b[0]+","+b[1]+","+b[2]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0a5152f
2012-08-01 · TA获得超过107个赞
知道答主
回答量:124
采纳率:0%
帮助的人:27.3万
展开全部
我也遇到同样的问题,java教程上说是引用类型会被修改到。但是我自己编写代码的时候输出结果居然是不会影响到源数组,真不知道哪个是正确的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-08-24
展开全部
是DeepCopy,深拷贝,不同的内存,不会互相影响。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式