美文网首页
java中参数传递,是值传递

java中参数传递,是值传递

作者: flyjar | 来源:发表于2021-01-08 17:33 被阅读0次

表面传的是对象,其实还是一串数字,还是值传递,只不过这个值可以指向内存空间的一个对象
就好比传递的都是一张纸,只不过其中一张纸上写了你家地址。所以java中的传递是值传递

错误理解

  • 错误理解一:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。 如果是个引用,就是引用传递。
  • 错误理解二:Java 是引用传递。
  • 错误理解三:传递的参数如果是普通类型,那就是值传递,如果是对象,那就是引用传 递。

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

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

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

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

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

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

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

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

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

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

相关文章

  • Java 参数的传递

    Java 的参数是值传递,不是引用传递 Java 中只有值传递,方法按值调用(call by value)。也就是...

  • JAVA是按值传递还是按引用传递

    java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? String和int参数传递是按值传递还是引用...

  • java中的参数传递(只有值传递没有引用传递)

    Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递)。所以在java方法中改变参数的值是不会改变原...

  • 解决java中的参数传递问题

    Java中只有传值调用(值传递),没有传址调用(址传递或者引用传递)。所以在java方法中改变参数的值是不会改变原...

  • 聊聊Java内部类

    一.磨叽磨叽Java值传递与引用传递 “在Java里面参数传递都是按值传递”即:按值传递是传递的值的拷贝,按引用传...

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

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

  • 谈谈Java的方法参数传递机制

    值传递# Java的方法参数传递是值传递!是值传递!值传递!!!重要的事情说三遍。什么是值传递?一个很简单的例子:...

  • 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性

    是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用...

  • (二)值传递与引用传递

    首先,我们要明确一点,Java中只有值传递,至于原因,下面说。 错误理解: 参数是值,就是值传递;参数是引用,就是...

  • Java值传递

    “在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值...

网友评论

      本文标题:java中参数传递,是值传递

      本文链接:https://www.haomeiwen.com/subject/prmfaktx.html