java 传入参数_Java 中方法参数的传递

java中方法参数传递看似有两种,值传递和引用传递。而实际上都是值传递。

所谓值传递,传递的是变量的副本就是说,在将变量a作为参数传进方法中时,方法中接收到的是a的副本,在方法中对参数的修改实际上修改的是a的副本,所以不会影响到a的值。

而引用传递,传递的是变量的内存地址。在将变量a作为参数传递给方法时,传递的是a的内存地址,在方法中对参数的修改,实际上是修改的a本身。

因为java的变量有两类,一类是基本数据类型,一类是引用类型。所以就把基本数据类型作为参数进行传递时,当做了“值传递“;把引用类型作为参数进行传递时,当做了“引用传递“。 事实上无论是传递基本数据类型还是引用类型,java中都是按“值传递”进行操作的。

在引用变量r作为 参数传到方法中时,传递的是r的副本。只不过r和r的副本都指向了同一个对象。

public class TestParamPassing {

public static void main(String[] args){

int b = 4;

testValueParam(b);

System.out.println("======== b : " + b);

List list = new ArrayList();

list.add("a");

list.add("b");

testReferenceParam(list);

System.out.println("======== list : " + list);

}

public static void testReferenceParam(List list){

list.add("c");

list = new ArrayList<>();

list.add("d");

System.out.println("-------- list : " + list);

}

public static void testValueParam(int a){

System.out.println("======== a: " + a);

a=3;

System.out.println("======== a after : " + a);

}

}

执行结果为:

======== a: 4

======== a after : 3

======== b : 4

-------- list : [d]

======== list : [a, b, c]

在方法testValueParam(int a)中,因为是“值传递”,所以传到方法中的是原始值的副本,所以在方法中对a的修改,不会影响到原始值。

在方法testReferenceParam(List list)中,因为是“值传递”,所以传到方法中的是原始值的副本,所以两者都指向了同一个对象,因此在方法中对对象的修改,会影响到原始值指向的对象。但是,当在方法中,将副本指向了其他的对象,再对副本指向的对象进行修改,就不会影响到原始值所指向的对象了。所以在传递引用变量时,也是“值传递”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值