Java中为什么改变了复制后的数组的值原数组里面的值也会被改变
展开全部
因为数组是一个对象
也许楼主是做了类似这样的事
int[] i1 = new int[10];
int[] i2 = i1;
这样的话i1和i2访问的是内存中的同一段数据,所以修改一个,另一个也跟着改变了
想要不改变的话应该这样复制
int[] i1 = new int[10];
int[] i2 = new int[10];
for(int i=0;i<i1.length;i++){
i2[i]=i1[i];
}
每次new都会在内存中开辟一个新的空间,这样两个数组所访问的就不是同一地址了
两个数组就可以独立操作了
但是如果是一个复合引用类型的数组,即使用第二种方式复制,结果仍是修改一个,另一个跟着变
也许楼主是做了类似这样的事
int[] i1 = new int[10];
int[] i2 = i1;
这样的话i1和i2访问的是内存中的同一段数据,所以修改一个,另一个也跟着改变了
想要不改变的话应该这样复制
int[] i1 = new int[10];
int[] i2 = new int[10];
for(int i=0;i<i1.length;i++){
i2[i]=i1[i];
}
每次new都会在内存中开辟一个新的空间,这样两个数组所访问的就不是同一地址了
两个数组就可以独立操作了
但是如果是一个复合引用类型的数组,即使用第二种方式复制,结果仍是修改一个,另一个跟着变
2011-11-16
展开全部
有值类型和引用类型,复制函数是引用类型做参数
更多追问追答
追问
有值类型 是什么概念啊
追答
8中简单类型都是值类型,如int、char、boolean等
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-11-16
展开全部
复制的是引用
追问
引用怎么解释,还是不怎么懂 求解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |