java中参数传递值传递,java中参数传递,是值传递

错误理解

错误理解一:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。 如果是个引用,就是引用传递。

错误理解二:Java 是引用传递。

错误理解三:传递的参数如果是普通类型,那就是值传递,如果是对象,那就是引用传 递。

求值策略

我们说当进行方法调用 的时候,需要把实际参数传递给形式参数,那么传递的过程中到底传递的是什么东西 呢?这其实是程序设计中求值策略(Evaluation strategies)的概念。

有哪几种求值策略

求值策略分为严格求值和非严格求值两大类,多数现存编程语言对函数都使用严格求值。Java也是如此

在严格求值策略中分为是传值调用(Call by value)、传引用调用(Call by reference)以及传共享对象调用(Call by sharing)。

传值调用、传引用调用、传共享对象调用。Java采用了传共享对象调用策略

1 传值调用(值传递)

在传值调用中,实际参数先被求值,然后其值通过复制,被传递给被调函数的形式 参数。因为形式参数拿到的只是一个"局部拷贝",所以如果在被调函数中改变了形式参 数的值,并不会改变实际参数的值。

2 传引用调用(引用传递)

在传引用调用中,传递给函数的是它的实际参数的隐式引用而不是实参的拷贝。因 为传递的是引用,所以,如果在被调函数中改变了形式参数的值,改变对于调用者来说 是可见的。

3 传共享对象调用(共享对象传递)

传共享对象调用中,先获取到实际参数的地址,然后将其复制,并把该地址的拷贝 传递给被调函数的形式参数。因为参数的地址都指向同一个对象,所以我们也称之为" 传共享对象",所以,如果在被调函数中改变了形式参数的值,调用者是可以看到这种 变化的。

我们可以总结说,Java 中的求值策略是共享对象传递,这是完全正确的。共享对象传递策略,实际就是先获取实参的地址,复制地址,将地址传递给形参。所以是值传递

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值