当前位置: 代码迷 >> Java相关 >> java学习之疑二
  详细解决方案

java学习之疑二

热度:128   发布时间:2007-04-29 12:15:56.0
java学习之疑二
public class Example2_3
{ public static void main(String args[])
{ int a[]={100,200,300};
int b[]={10,11,12,13,14,15,16};
a=b;
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("数组a的长度:"+a.length);
for (int i =0;i<a.length;i++)
{
System.out.println(a[i]);
}
}
}
这个程序结果是123456,11,12,13,14,15,16
不是顺序执行吗b[0]是后被赋值了,数组b先赋值给a,但结果b[0]被后赋值的结果影响到a[],这个地方跟C有点不一样。


不太理解程序的运行结果 - -|| 望路过的达人能点拨一二
搜索更多相关的解决方案: java  学习  

----------------解决方案--------------------------------------------------------

public class Example2_3
{ public static void main(String args[])
{ int a[]={100,200,300};
int b[]={10,11,12,13,14,15,16};
a=b; //此时a是数组b的引用了
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("数组a的长度:"+a.length);
for (int i =0;i<a.length;i++)
{
System.out.println(a[i]);
}
}
}

/*结果:数组a:123456,11,12
数组b:123456,11,12
数组a的长度:7
123456
11
12
13
14
15
16
*/

[此贴子已经被作者于2007-4-29 12:38:34编辑过]


----------------解决方案--------------------------------------------------------
也就是说对b的操作会影响到a?
----------------解决方案--------------------------------------------------------
也就是说,a只指向b了。不指向原来的数组a了。
----------------解决方案--------------------------------------------------------
你这严重违反了java规范,你好好看看,数组之间的对copy是怎样作的
----------------解决方案--------------------------------------------------------

建议lz以后把要实现什么写清楚,这样大家也知道你写的到底对不对
就写a=b;别人还得猜你要干什么...


----------------解决方案--------------------------------------------------------
我这也是从其他地方看来的,当时不太理解他要实现什么。
----------------解决方案--------------------------------------------------------
  相关解决方案