关于java中的参数传递问题

java中的参数传递方式只有值传递一种。


1.关于基本类型的值传递
 系统会复制一份实际参数值传入,所以对形参的操作不会影响实际的参数。

2.关于引用类型的值传递
 系统会复制该引用变量,并通过值传递传入实参中所存的地址,使两个引用变量同时指向该对象。
 由于堆内存中只有一份该对象,所以不论任一引用变量对其进行操作,都是对该对象操作。
 所以会造成传入的是引用变量本身的错觉,实际上传入的是其复制品,通过值传递使其也指向了堆中的该对象。

下来看一个题:

class V{
    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;
        V v=new V();
        v.i=25;
        second(v,i);
        System.out.println(v.i);
    }

    public void second(V v,int i){
        i=0;
        v.i=20;
        V val=new V();
        v=val;
        System.out.println(v.i+" "+i);
    }
}

问题是该代码的输出结果.

这里写图片描述

该图可以清晰的解释输出结果为15 0 20 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值