Java程序求解释,为什么改变数组b[0]的值同时改变数组a[0]的值,在Java里数组与数组之间相互赋值怎么理解

求系统知识点讲解,C中的数组首地址和数组与Java中数组首地址及数组之间的赋值的区别... 求系统知识点讲解,C中的数组首地址和数组 与 Java中数组首地址及数组之间的赋值 的区别 展开
 我来答
xingfu91250
2013-03-12 · TA获得超过179个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:172万
展开全部
数组不属于八大基本类型的数据,是属于引用类型的数据
引用类型的数据在创建之后,变量代表的是引用,如同你的例子里面
int b[],这个b是引用,指向了内存中的数组整体
执行了b=a之后,就把int a[]定义出来的引用a给了b,从此,int b[]的引用b指向的不再是10,20...那些数组数据,而是指向的100,200,300这些数据,b和a同时指向一块内存空间,不管谁改变了内存空间里的值,都会 最终影响到内存空间的值
追问
那如何让数组a的值只是复制到数组b中?像楼下说的用中间变量么?
Java中数组之间的赋值是不是和C/C++的相同?
追答
不需要,数组有克隆方法 clone(),使用数组类型接受,就能完全复制
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
root_民工
2013-03-12 · TA获得超过146个赞
知道答主
回答量:165
采纳率:0%
帮助的人:73.2万
展开全部
那是因为你给数组b又重新赋值,这是计算机内部,a和b两个引用对象指向同一个堆内存,不管通过a[0]或b[0]都指向的是同一个元素。
追问
Java中数组还能代表指针么?有没有系统的知识点讲解?
追答
理论上来说:java中是没有指针的。   但是在集合中有一个和C中的指针相似的叫游标。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Silin_Silin
2013-03-12 · TA获得超过470个赞
知道小有建树答主
回答量:303
采纳率:50%
帮助的人:384万
展开全部
你就用个临时变量啊
int[] tmp = a;
a = b;
b = tmp;
更多追问追答
追问
有什么区别?
追答
你那样
int[] a;
int[] b;
b = a; 那么现在b和a都指向同一个数组了

用一个中间变量的话
int[] tmp = a; // tmp 指向原来的a
a = b; // a 指向 b
b = tmp; // b 指向 tmp,即原来的a
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式