2 qq 30951345 qq_30951345 于 2016.05.03 13:36 提问

数组复制问题--Interger类型数组

public class IntegerArray{
public static void main(String[] args){
Integer[] scores1 = new Integer[]{1,2,3,4,5};
Integer[] scores2 = new Integer[scores1.length];
for(int i = 0; i < scores1.length; i++){
scores2[i] = scores1[i];
}
for(Integer score2: scores2){
System.out.print(score2);
}
System.out.println();
scores2[0] = 7;
for(Integer score1 : scores1){
System.out.print(score1);
}
System.out.println();
for(Integer score2: scores2){
System.out.print(score2);
}
}

}

结果:
12345
12345
72345

疑问:Integer类型的数组在此例中应该是浅复制啊?怎么结果是不符合浅复制,而是深复制

2个回答

CSDNXIAON
CSDNXIAON   2016.05.03 13:42

数组复制引用问题
java数组复制问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

w172087242
w172087242   Ds   Rxr 2016.05.03 13:41

Integer只是int类型的装箱,和其他引用类型不同。
你改了下标的数字,就改了,而不是改了引用的值。

而且以你的这种方式,就算是其他引用类型,值也会只改变数组2,
因为你的下标指向了一个新地址,代表指针与数组一的原指向地址已经不同了。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C++中有关数组的一些细节问题
今天读C++ primer发现其中讲数组的一章,有一些东西自己还不是很清楚,所以专门下一篇博客来总结一下数组里面的一些容易忘记的知识。 1. 首先看下面声明数组的几种方式有什么区别:int *ptr[10]; int &refs[10] = /* */; error int (*Parray)[10] = &array; int (&arrRef)[10] = arr;首先,第一个的意思是定义了
java复制数组的四种方法
今天在牛客遇到这样一道题: 1 java语言的下面几种数组复制方法中,哪个效率最高? 正确答案: B   你的答案: C (错误) for 循环逐一复制 System.arraycopy Array.copyOf 使用clone方法
【java】数组复制几种方式比较
import java.util.Arrays; /** * System.arraycopy方法的使用。 * 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束 */ public class LessionSystemArraycopy { public static void main(String[] args) { // 此方法为n
java数组复制的效率
AVA语言的下面几种数组复制方法中,哪个效率最高? 正确答案: B   你的答案: D (错误) for循环逐一复制 System.arraycopy System.copyof 使用clone方法  A、for循环的话,很灵活,但是代码不够简洁.     B、System.arraycopy()源码。可
integer转换为 long
<br />long productId_int = Integer.valueOf(productId).longValue() ;
如何利用C语言实现数组复制的功能
把数组src[ ]中的数据复制到dest[ ]中 /* 数组复制作业 */ #include void cpy(int *p_src,int *p_dest,int size){ int num = 0; for(num = 0;num <= size - 1;num++){ p_dest[num] = p_src[num]; } } int main(){ int src[] =
数组复制的几种常用方法
1、System.arraycopy(src, 1, dest, 0, 6);     src为原数组,1为复制的起始位置,dest为目的数组,0为目的数组放置的起始位置,6为复制的长度 2、dest=(int[]) src.clone();//使用clone创建 dest为目的数组,src为原数组,clone复制实现数组全部复制 3、dest=Arrays.copyOf(src, 2);
arraystest.java
java.util数组操作代码,数组复制,数组排序,数组赋值,数组相等判断
c语言复制数组的函数
c语言中 数组不能直接用数组名相互赋值 如果需要从a数组中复制k个元素到b数组中 可以使用函数:memcpy(b,a,sizeof(int)*k);以上代码将a,b数组看作是int型 是其他类型做相应的改变就行了
JAVA中复制数组的五种方法
“=”,相当于将一个数组变量的引用传递给另一个数组;如果一个数组发生改变,那么引用同一数组的变量也要发生改变. 使用FOR循环,将数组的每个元素复制或者复制指定元素,不过效率差一点 使用clone方法,得到数组的值,而不是引用,不能复制指定元素,灵活性差一点 使用System.arraycopy(src, srcPos, dest, destPos, length)方法,推荐使用,效率最高 publ