
关于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
这是为什么?大家帮忙. 展开
{
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
这是为什么?大家帮忙. 展开
3个回答
展开全部
分析一下原因吧
这是java和别的语言不一样的地方之一,它的变量分为两种:基本类型和引用类型。基本类型不用多说,那引用类型呢,它是一个对象类型的值(java中数据类型分为基本类型和对象类型两大类),值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。很好理解吧,因为一个对象(要把数组当作对象对待,你是不是发现一般定义数组用int[] a=……,虽然int a[]=……,也很常用),比如说一个人,不可能是个数字也不可能是个字符啊,所以要想找它的话只能找它的地址了。
当你b=a时,b也舍弃了原来的地址,指向了a指向的那一块内存地址,所以你改变b或者a,都会改变a的那块地址。你输出的就是那块地址的东西,估计你明白了吧
这是java和别的语言不一样的地方之一,它的变量分为两种:基本类型和引用类型。基本类型不用多说,那引用类型呢,它是一个对象类型的值(java中数据类型分为基本类型和对象类型两大类),值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。很好理解吧,因为一个对象(要把数组当作对象对待,你是不是发现一般定义数组用int[] a=……,虽然int a[]=……,也很常用),比如说一个人,不可能是个数字也不可能是个字符啊,所以要想找它的话只能找它的地址了。
当你b=a时,b也舍弃了原来的地址,指向了a指向的那一块内存地址,所以你改变b或者a,都会改变a的那块地址。你输出的就是那块地址的东西,估计你明白了吧
展开全部
原始类型进行赋值,它赋给对方的是本对象在内存中的地址,你把a赋给b就等于把a的地址给了b,那么你不管改变a还是b,其实你改变的都是a的结果.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
b=a; b和a就是同一对象都为a。再改变b中的值也就是改变了a,呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询