瑞安市湖岭镇人民政府:java的一个简单的问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/03 07:00:48
class Ex0610{
public static void main (String[] args){
int[]a={1,3,5,7,9};
int[]b={2,4,6,8,10};
b=a;b[1]=b[1]+17;
System.out.println(a[1]);

}
}
输出为什么是20,不是3吗?我觉得数组a没有变啊!
这是为什么啊?

b=a实际是地址赋值,b现在是a的首地址了,也就是说现在b和a都是原来a的地址,所以把b[1]改了,a[1]也也改了

b=a实际上将a的地址赋给了b,改b等于改a

好好看看书了
好多书上都有这样的题

b=a是指把b原来的指向某地址的指针指向a所指向的地址
也就是b原来代表的数组已经丢失了,成了垃圾
现在b指向了a所代表的数组,即一个数组两个名字
a,b都代表一个数组,即原来的数组a