• coming
    2020-01-04
    这节课有点懵圈,跟C++搞混了
    - 参数为基本类型
      - 形参改变,实参不变
    - 参数为引用类型时
      - 形参改变引用类型状态(例如成员变量的值),实参引用类型状态也会变化
      - 但形参不能改变引用类型的值,即不能改变引用类型所指向的对象
    - 返回值
      - 同引用类型作为参数的情况
      - 假设`a1`为返回值,`a2 = a1`,可以通过`a2`改变对象的状态,但是`a1,a2`指向的仍然是同一个对象
    展开

    作者回复:

    你可以先阅读一下FAQ里的这个文章 “Java方法调用是传值还是传引用”
    https://github.com/deepnighttwo/LetsJava/blob/master/FAQ/02%E7%AB%A0-Java%E6%96%B9%E6%B3%95%E8%B0%83%E7%94%A8%E6%98%AF%E4%BC%A0%E5%80%BC%E8%BF%98%E6%98%AF%E4%BC%A0%E5%BC%95%E7%94%A8.md

    其实Java比C++要简单,Java的参数传递就一句话:把形参当成方法的局部变量,然后在方法调用时,把实参的值,赋值给形参。

    完事儿了,就这么简单,没有指针,没有地址,没有第二种可能和操作。

    所以,形参无论怎么折腾,都无法影响实参一丝一毫。这点在参数为基本数据类型时毫无混淆的可能。

    但是如果参数是个引用,就略绕一点点,但也只是一点点。如果参数是个引用,那么很简单,其实就是形参和实参这两个引用,指向同一个对象而已。仅此而已。

    (如果形参在方法代码里再指向别的对象,那么还是那句话,对实参没有任何影响,实参还是指向之前的对象)

     1
     1
我们在线,来聊聊吧