有关arrays的一个简单问题
程序如下:
public class Arrays {
public static void main(String[] args) {
int[] a1 = { 1, 2, 3, 4, 5 };
int[] a2;
a2 = a1;
for(int i = 0; i < a2.length; i++)
a2[i]++;
for(int i = 0; i < a1.length; i++)
System.out.println(
"a1[" + i + "] = " + a1[i]);}
输出结果为"a1[0] = 2","a1[1] = 3","a1[2] = 4","a1[3] = 5","a1[4] = 6"
不明白为何有6,还有a2[i]++有啥作用?最好能解释一下程序,望大家指点!多谢
问题点数:20、回复次数:6Top
1 楼llshnshd(申)回复于 2003-11-02 22:55:35 得分 10
a2[i]++ 就是将数组a2里的元素的值 加1再赋给a2[i]
相当于 a2[i]=a2[i]++1;
在java 里,数组是一个对象,所以当执行a2=a1时,就是说,a2和a1指向同一个对象,也可以说是指向同一个地址。所以改变a2里的值就等于是改变了a1里的值 。Top
2 楼chatlin(lintao)回复于 2003-11-02 22:55:55 得分 10
Java中任何东西都是对象,对象是引数传递,也就是你那a2 = a1;把a1的地址传给a2,换句话说a1,a2同指一个对象,a2的值的变化一定反映再a1上Top
3 楼OExpress(浪子猫)回复于 2003-11-03 09:18:16 得分 0
以上两位说的太对了,相信楼住应该明白了!Top
4 楼csyan88(阿豆)回复于 2003-11-03 09:30:28 得分 0
a2=a1是传递句柄,就是说此时a2和a1指向的是相同的对象Top
5 楼hyhu(先飞笨鸟)回复于 2003-11-03 09:31:48 得分 0
数组传递的是reference,也就是引用,所以al和a2是指向同一个对象,a2[i]++是在使用过a2[i]后把a2[i]的元素加1,a1指向对象,输出就是2,3,4,5,6了!
Top
6 楼Bruceyao(江湖小虾米)回复于 2003-11-03 10:39:15 得分 0
执行a2=a1时,就是说,a2和a1指向同一个对象,也可以说是指向同一个地址。所以改变a2里的值就等于是改变了a1里的值Top




