黑马程序员技术交流社区

标题: 小题 [打印本页]

作者: 小甲鱼    时间: 2015-3-30 16:13
标题: 小题
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);
    }
}


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


作者: 小甲鱼    时间: 2015-3-30 18:07
咋没人来答呢?  太简单了?
作者: 戴祺    时间: 2015-3-30 19:07
调来调去,看不懂
作者: rzd5995692    时间: 2015-3-30 19:34
本帖最后由 rzd5995692 于 2015-3-30 19:40 编辑

15  0
15   

作者: ♂陆仁贾メ    时间: 2015-3-30 19:44
输出:
25
15 0
作者: ♂陆仁贾メ    时间: 2015-3-30 19:45
♂陆仁贾メ 发表于 2015-3-30 19:44
输出:
25
15 0

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

作者: ♂陆仁贾メ    时间: 2015-3-30 19:47
♂陆仁贾メ 发表于 2015-3-30 19:45
额。。好像应该输出:
20
15 0

好像有错了,,应该是:
15 0
15
吧!
作者: ♂陆仁贾メ    时间: 2015-3-30 19:49
15 0
15

应该没错了
作者: rzd5995692    时间: 2015-3-30 20:16
rzd5995692 发表于 2015-3-30 19:34
15  0
15

不懂了,sec(v,i);应该调用完,再打印的啊 ,那应该地址指向了va啊   ,i=15
作者: rzd5995692    时间: 2015-3-30 20:23
rzd5995692 发表于 2015-3-30 20:16
不懂了,sec(v,i);应该调用完,再打印的啊 ,那应该地址指向了va啊   ,i=15 ...

意思是,v的地址没变,只是在局部发生了变化?
作者: rzd5995692    时间: 2015-3-30 20:31
rzd5995692 发表于 2015-3-30 20:23
意思是,v的地址没变,只是在局部发生了变化?

哦。懂了 ,就等于是复制了一份呗,
作者: xiaogougou    时间: 2015-3-30 20:48
答案是5 20,不过感觉这程序阅读性极差。。。
作者: lily15    时间: 2015-3-30 20:55
应该是
     15 0
     20

作者: One_M    时间: 2015-3-30 21:10
15-0-20~!!
作者: 黑马:二师兄    时间: 2015-3-30 21:12
顶帖!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2