A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程旦 中级黑马   /  2012-3-20 10:44  /  1984 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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));

         }

        }
大家看看这题的结果是什么啊。。。是一个公司的笔试题哦

7 个回复

倒序浏览
17对不对 啊
回复 使用道具 举报
是二十啊
回复 使用道具 举报
答案:20
数组对象a和数组对象b指向同一个数组。
回复 使用道具 举报
答案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

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
该题目中的a与b都是数组int[]{1,2,3,4,5}的引用,数组在内存中只有一份,无论是对a操作还是对b操作,其实质均是对内存中{1,2,3,4,5}的操作
回复 使用道具 举报
李飞 中级黑马 2012-3-20 14:26:09
7#
结果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之间没有什么联系,只不过是数组中的元素相同而已

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马