首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

SCJP考题:数组 遍历 var-arg,该如何处理

2012-01-14 
SCJP考题:数组 遍历 var-argGiven:Java code1. public class Venus {2. public static void main(String[]

SCJP考题:数组 遍历 var-arg
Given:

Java code
1. public class Venus {2. public static void main(String[] args) {3. int [] x = {1,2,3};4. int y[] = {4,5,6};5. new Venus().go(x,y);6. }7. void go(int[]... z) {8. for(int[] a : z)9. System.out.print(a[0]);10. }11. } 

What is the result?
A. 1
B. 12
C. 14
D. 123
E. Compilation fails.
F. An exception is thrown at runtime.

这道题好迷惑。
如果最后输出换成:
for(int[] a : z)
System.out.print(a[2]);
会输出类似于:
[I@6197cc[I@734d246.
如果输出a[1]/a[2],结果会是25 / 36
这是怎么回事啊。这里是什么语法在起作用啊?
thx

[解决办法]
答案C 
其实这道题考的就是JAVA里面的所谓“可变参数”
go方法 接受可变参数,就是可以接受多个数组,z是数组的数组,
z[0]是第一个传入数组 z[1]是第二个(如果传入了多于一个)
然后for(int[] a:z)打印每个数组的第一个元素
[解决办法]
我测试了一下
a[1]=14
a[2]=25
a[3]=36
表示不能理解
[解决办法]

问题搞明白了 就结贴给分哈


探讨

引用:

答案C
其实这道题考的就是JAVA里面的所谓“可变参数”
go方法 接受可变参数,就是可以接受多个数组,z是数组的数组,
z[0]是第一个传入数组 z[1]是第二个(如果传入了多于一个)
然后for(int[] a:z)打印每个数组的第一个元素

有道理,数组的数组,就是这个道理了。

[解决办法]
把int[]类型换成X类型,且假设X有f0,f1,f2三个字段:

1. public class Venus {
2. public static void main(String[] args) {
3. X x = new X(1,2,3);
4. X y = new X(4,5,6);
5. new Venus().go(x,y);
6. }
7. void go(X... z) {
8. for(X a : z)
9. System.out.print(a.f0);
10. }
11. } 

这个不可能看不懂吧

热点排行
Bad Request.