以下 JAVA 代码正确的输出是__?

class Value
{
    public int i = 15;
}

public class Test_1 
{
    public static void main(String argv[ ])
    {
        Test_1 t = new Test_1( );
        t.first( );
    }
    public void first( )
    {
        int i = 5;
        Value v = new Value( );
        v.i = 25;
        second(v,i);
        System.out.print(v.i);
    }
    public void second(Value v, int i)
    {
        i = 0;
        v.i = 20;
        Value val = new Value( );
        v = val;
        System.out.print(v.i+" "+i);
    }
}
1554 次浏览
  • A、15 0 15
  • B、15 0 20
  • C、20 0 20
  • D、0 15 20
传值传引用问题是Java中经典问题。Java传递原始类型数据时使用的是传值方式;传递对象时则使用传引用方式;String类型的数据采用的是传值方式,因为字符串是不可变的。当然,更深入的理解需要了解Java的运行机制。本题中,在执行second(v,i)方法时,print(v.i+" "+i)中,v=val,而val是刚刚实例化的对象,所以v.i为15,此时i的值为0。由于在second方法中传递的是对象v的引用,返回到first方法时,v.i的值发生了变化,变为20,而此时first方法中的i值为5。
ppq
挑战成功
6个月前
ppq
挑战失败
6个月前
挑战成功
2年前
挑战失败
2年前
挑战成功
2年前
挑战失败
2年前
挑战成功
2年前
挑战成功
2年前
挑战失败
2年前
挑战成功
3年前