7 回答

TA贡献1821条经验 获得超4个赞
数组是引用类型变量,int a[] ={1,2,3,4};中值{1,2,3,4}是存放在堆内存中,而变量是在栈内存中,
当b=a赋值是使b指向到堆内存中的值,所以在给b数组修改变量时是将堆内存中的值改变了,
同时a数组也是指向同一个堆内存的地址上的值,所以a输出出来也是改变过得。

TA贡献1828条经验 获得超3个赞
数组的复制方法现在至少有四个思路:
1 使用循环结构 这种方法最灵活。唯一不足的地方可能就是代码较多
2 使用Object类的clone()方法, 这种方法最简单,得到原数组的一个副本。灵活形也最差。效率最差,尤其是在数组元素很大或者复制对象数组时。
3 使用Systems的arraycopy这种方法被告之速度最快,并且灵活性也较好,可以指定原数组名称、以及元素的开始位置、复制的元素的个数,目标数组名称、目标数组的位置。
4 Arrarys类的copyOf()方法与copyOfRange()方法可实现对数组的复制

TA贡献1942条经验 获得超3个赞
int a[]={1,2,3,4};//只是让a指向了数组{1,2,3,4};
b=a//让b也指向了数组{1,2,3,4};
a和b的值都只是数组{1,2,3,4}的引用。所以因为指向了同一个数组对象,数组变了,a,b的值也都跟着变了。
a,b中实际存储的都只是数组对象{1,2,3,4}在内存中的地址。数组的值变了,但a,b中的数组对象的地址是没变的。
添加回答
举报