一个关于数组的JAVA小程序,有点不太明白。

程序如下:publicclassShuzu{publicstaticvoidmain(String[]args){inta[]={1,2,3};intb[]={4,5,6... 程序如下:
public class Shuzu{
public static void main(String[] args){
int a[] = {1,2,3};
int b[] = {4,5,6,7,8,9};
b = a;
b[0] = 999;
System.out.println("a[] = "+a[0]+","+a[1]+","+a[2]);
System.out.println("b[] = "+b[0]+","+b[1]+","+b[2]);
System.out.println("Length of b is "+b.length);
}
}
为什么最后a[0]也等于999了呀?
是不是涉及到JAVA内部的存储结构呀?
望高手给与解答。
展开
 我来答
flyingFish211
2011-04-19 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
b = a;--->是让b和a都指向相同的内存地址了,因此任何a或者b得变化,都会引起a b同时变化。

要彻底理解java对象的数组的含义,数组对象只保存首地址(可以理解为内存某一块)
取也花开了时5541
2011-04-19 · TA获得超过254个赞
知道小有建树答主
回答量:845
采纳率:0%
帮助的人:0
展开全部
b = a;
表示把b的引用指向了a,所以一样了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
icebdbd
2011-04-19 · 超过35用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:89.4万
展开全部
是的 你的b=a事实上是把{1,2,3}这个数组的引用给了b 它们两个指向的是同一个堆里的内存空间 所以更改b a也会更改
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
倾城的秘密丶c5928
2011-04-19 · TA获得超过233个赞
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:216万
展开全部
数组是地址传递,b=a, 哪么b和a指向同一个对象,所以b和a是同一内容
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流水不腐小夏
2011-04-19 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:130万
展开全部
这个涉及到地址的引用,虽然Java中没有指针的概念,但是你写一个
b=a;
那么数组a的地址b也引用在,
b[0]=999,就改变了数组的数据,所以a[0]也就改变了,不知道你懂不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式