Java程序求解释,为什么改变数组b[0]的值同时改变数组a[0]的值,在Java里数组与数组之间相互赋值怎么理解
3个回答
展开全部
数组不属于八大基本类型的数据,是属于引用类型的数据
引用类型的数据在创建之后,变量代表的是引用,如同你的例子里面
int b[],这个b是引用,指向了内存中的数组整体
执行了b=a之后,就把int a[]定义出来的引用a给了b,从此,int b[]的引用b指向的不再是10,20...那些数组数据,而是指向的100,200,300这些数据,b和a同时指向一块内存空间,不管谁改变了内存空间里的值,都会 最终影响到内存空间的值
引用类型的数据在创建之后,变量代表的是引用,如同你的例子里面
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(),使用数组类型接受,就能完全复制
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那是因为你给数组b又重新赋值,这是计算机内部,a和b两个引用对象指向同一个堆内存,不管通过a[0]或b[0]都指向的是同一个元素。
追问
Java中数组还能代表指针么?有没有系统的知识点讲解?
追答
理论上来说:java中是没有指针的。 但是在集合中有一个和C中的指针相似的叫游标。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你就用个临时变量啊
int[] tmp = a;
a = b;
b = tmp;
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询