黑马程序员技术交流社区
标题:
静态变量做参数的问题
[打印本页]
作者:
程旦
时间:
2012-3-20 10:44
标题:
静态变量做参数的问题
public class Test {
public static int[] a=new int[]{1,2,3,4,5};
public int foo(int[] b){
a[1]=b[2]+a[3];
b[1]=a[1]+a[2];
return a[1]+b[1];
}
public static void main(String[] args) {
System.out.println(new Test().foo(a));
}
}
大家看看这题的结果是什么啊。。。是一个公司的笔试题哦
作者:
马云
时间:
2012-3-20 10:48
17对不对 啊
作者:
马云
时间:
2012-3-20 10:50
是二十啊
作者:
尹震
时间:
2012-3-20 11:02
答案:20
数组对象a和数组对象b指向同一个数组。
作者:
♂诸侯♂
时间:
2012-3-20 12:19
答案20
a[1]=b[2]+a[3];
//b[2]=3,a[3]=4 。这一个运行完之后。a[1]= 7
b[1]=a[1]+a[2];
//a[1]=7,a[2]=3。这一行运行完之后,b[1] =10. a[1]=b[1]=10
return a[1]+b[1];
//return a[1]+b[1]=10+10=20
作者:
陈从宾
时间:
2012-3-20 12:58
该题目中的a与b都是数组int[]{1,2,3,4,5}的引用,数组在内存中只有一份,无论是对a操作还是对b操作,其实质均是对内存中{1,2,3,4,5}的操作
作者:
李飞
时间:
2012-3-20 14:26
结果20
a[1]=b[2]+a[3];a[1]=a[2]+a[3]——>a[1]=7;a={1,7,3,4,5};这个时候的"b"数组为{1,7,3,4,5};
b[1]=a[1]+a[2];a[1]=a[1]+a[2]——>a[1]=10;a={1,10,3,4,5};这个时候的"b"数组为={1,10,3,4,5};
a[1]+b[1]=10+10=20;
这个感觉考的就是对同一个对象引用的操作
我们把这个题目改一下,主函数中的a改为new int[]{1,2,3,4,5};
结果就是17了
a[1]=b[2]+a[3];a[1]=3+4——>a[1]=7;a={1,7,3,4,5};这个时候传进来的b没有改变还是{1,2,3,4,5};
b[1]=a[1]+a[2];b[1]=a[1]+a[2]——>b[1]=10;a={1,7,3,4,5};这个时候传进来的b={1,10,3,4,5};
a[1]+b[1]=7+10=17;
这个时候数组a和数组b之间没有什么联系,只不过是数组中的元素相同而已
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2