求解答,简单JAVA问题
publicclassExample{publicstaticvoidmain(Stringargs[]){inta[]={100,200,300};intb[]={10...
public class Example
{
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[2]);
System.out.println("数组b:"+b[0]+","+b[1]+","+b[2]);
System.out.println("数组b的长度:"+b.length);
}
}
数组a:123456,300
数组b:123456,200,300
数组b的长度:3
为什么a第一个元素变为123456. 展开
{
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[2]);
System.out.println("数组b:"+b[0]+","+b[1]+","+b[2]);
System.out.println("数组b的长度:"+b.length);
}
}
数组a:123456,300
数组b:123456,200,300
数组b的长度:3
为什么a第一个元素变为123456. 展开
4个回答
展开全部
int[] a,int[] b其实是数组的一个引用,原本应该是这样的
int[] a=new int[3] 这个3是数组的长度
当b=a的时候,a和b就是相同数组的别名。a和b都是int[5]的引用,修改b也就修改了int[3],你再用a的时候就是被修改后的int[3]
打个比方一个小孩叫小明。有另外一个人叫张明。你现在叫小明,当然小明站出来了,但是现在把张明这个名字赋予给小明做大名字。之前那个人名字被剥夺了可以不用管。你现在叫张明,小明就站出来了啊,你给小名穿了衣服,改变了他现在的样子,你一会再叫小明,出来的就是穿了衣服的小明了。懂了么
int[] a=new int[3] 这个3是数组的长度
当b=a的时候,a和b就是相同数组的别名。a和b都是int[5]的引用,修改b也就修改了int[3],你再用a的时候就是被修改后的int[3]
打个比方一个小孩叫小明。有另外一个人叫张明。你现在叫小明,当然小明站出来了,但是现在把张明这个名字赋予给小明做大名字。之前那个人名字被剥夺了可以不用管。你现在叫张明,小明就站出来了啊,你给小名穿了衣服,改变了他现在的样子,你一会再叫小明,出来的就是穿了衣服的小明了。懂了么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
"hezhilong03"正解!
java的数组比较恶心,java也不推荐使用数组,用java的集合类完全可以解决问题,除非是特殊情况(比如规定非要使用数组)。
看看张孝祥的java就业培训教程的64到67页关于java数组的内存分配问题自然就明白了。
还有,java帮助里面有关于数组之间拷贝的函数。
java的数组比较恶心,java也不推荐使用数组,用java的集合类完全可以解决问题,除非是特殊情况(比如规定非要使用数组)。
看看张孝祥的java就业培训教程的64到67页关于java数组的内存分配问题自然就明白了。
还有,java帮助里面有关于数组之间拷贝的函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组是应用类型,当b=a时,b变量存储的是引用地址(就是数组在内存中存储的地址)就变成了a变量存储的引用地址(a和b中的地址同时指向了{100,200,300}这个数组),当b[0]=123456时修改了引用地址指向的内存中的值,而且a[0]也指向那个地址,所以a[0]变量从引用地址那儿得到的值就是改变后的值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java数组,=赋值,传递的是地址引用。相当于指针。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询