一道java题(引用)

public class Tester{
public static void main(String[] args){
   Integer var1=new Integer(1);
   Integer var2=var1;
   doSomething(var2);
   System.out.print(var1.intValue());
   System.out.print(var1==var2);
}
public static void doSomething(Integer a){
    a=new Integer(2);
    }
}

问:输出的是什么

其中a只是一个interger的引用,a=new Integer(2);只是将a作为新对象interger 2的引用,并不会改变原来interger 1的值

除非是通过引用改变值,才会影响到对象的值

class SimInt{
    int value;
    public SimInt(int value){
        this.value=value;
    }
}
public class Main{
    public static void change1(SimInt si){
        si=new SimInt(3);//重新指向了新的对象,原对象不受影响
    }
    public static void change2(SimInt si){
        si.value=3;//通过引用操作对象内部成员,原对象被改变
    }
    public static void main(String args[]) {
    SimInt si1=new SimInt(1);
        System.out.println(si1.value);//输出1
        change1(si1);
        System.out.println(si1.value);//输出1
      change2(si1);
       System.out.println(si1.value);//输出3
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值