关于JAVA赋值问题?

publicclassHello{publicstaticvoidmain(String[]args){inta[]={100,200,300};intb[]={10,1... public class Hello
{
public static void main(String[] args)
{
int a[]={100,200,300};
int b[]={10,11,12,13,14,15,16};
//////////////////////////////////
b=a;
b[0]=123456;
//////////////////////////////////
System.out.println("数组a:"+a[0]+","+a[1]+","+a[2]);
System.out.println("数组b:"+b[0]+","+b[1]+","+b[2]);
System.out.println("数组b的长度:"+b.length);
}
}
请问//////////中间的部分是怎么回事,我觉的结果应该是
数组a:100,200,300
数组b:123456,200,300
数组b的长度: 3
可是运行后的结果为
数组a:123456,200,300
数组b:123456,200,300
数组b的长度: 3
这是为什么?大家帮忙.
展开
 我来答
百度网友483fa97
2008-05-29 · TA获得超过455个赞
知道小有建树答主
回答量:413
采纳率:0%
帮助的人:607万
展开全部
分析一下原因吧
这是java和别的语言不一样的地方之一,它的变量分为两种:基本类型和引用类型。基本类型不用多说,那引用类型呢,它是一个对象类型的值(java中数据类型分为基本类型和对象类型两大类),值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。很好理解吧,因为一个对象(要把数组当作对象对待,你是不是发现一般定义数组用int[] a=……,虽然int a[]=……,也很常用),比如说一个人,不可能是个数字也不可能是个字符啊,所以要想找它的话只能找它的地址了。
当你b=a时,b也舍弃了原来的地址,指向了a指向的那一块内存地址,所以你改变b或者a,都会改变a的那块地址。你输出的就是那块地址的东西,估计你明白了吧
和平剌
2008-05-29 · TA获得超过432个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:92.8万
展开全部
原始类型进行赋值,它赋给对方的是本对象在内存中的地址,你把a赋给b就等于把a的地址给了b,那么你不管改变a还是b,其实你改变的都是a的结果.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
松心月f1
2008-05-29 · TA获得超过122个赞
知道答主
回答量:117
采纳率:0%
帮助的人:0
展开全部
b=a; b和a就是同一对象都为a。再改变b中的值也就是改变了a,呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式