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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小甲鱼 中级黑马   /  2015-3-30 16:13  /  472 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Value{
    public int i = 15;
}

public class Test {
    public static void main(String[] args) {
        Test t = new Test();
        t.first();
    }
    public void first(){
        int i = 5;
        Value v = new Value();
        v.i = 25;
        sec(v,i);
        System.out.println(v.i);
    }
    public void sec(Value v,int i){
        i = 0;
        v.i = 20;
        Value va = new Value();
        v=va;
        System.out.println(v.i+" "+i);
    }
}


不编译,你能想得到输出什么吗?

19 个回复

倒序浏览
咋没人来答呢?  太简单了?
回复 使用道具 举报
调来调去,看不懂
回复 使用道具 举报
本帖最后由 rzd5995692 于 2015-3-30 19:40 编辑

15  0
15   

点评

第二个 错了  发表于 2015-3-30 20:02
回复 使用道具 举报
输出:
25
15 0
回复 使用道具 举报

额。。好像应该输出:
20
15 0

点评

反了 Σ( ° △ °|||)︴  发表于 2015-3-30 20:04
回复 使用道具 举报
♂陆仁贾メ 发表于 2015-3-30 19:45
额。。好像应该输出:
20
15 0

好像有错了,,应该是:
15 0
15
吧!
回复 使用道具 举报
15 0
15

应该没错了

点评

嘿嘿 ! 用编译器去编译运行一下  发表于 2015-3-30 20:05
回复 使用道具 举报

不懂了,sec(v,i);应该调用完,再打印的啊 ,那应该地址指向了va啊   ,i=15

点评

对象的引用传递  发表于 2015-3-30 20:19
回复 使用道具 举报
rzd5995692 发表于 2015-3-30 20:16
不懂了,sec(v,i);应该调用完,再打印的啊 ,那应该地址指向了va啊   ,i=15 ...

意思是,v的地址没变,只是在局部发生了变化?

点评

传递的应该是对象引用的副本  发表于 2015-3-30 20:25
回复 使用道具 举报
rzd5995692 发表于 2015-3-30 20:23
意思是,v的地址没变,只是在局部发生了变化?

哦。懂了 ,就等于是复制了一份呗,
回复 使用道具 举报
答案是5 20,不过感觉这程序阅读性极差。。。
回复 使用道具 举报
应该是
     15 0
     20
回复 使用道具 举报
One_M 中级黑马 2015-3-30 21:10:10
14#
15-0-20~!!
回复 使用道具 举报
顶帖!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马