Java方法参数值传递、引用传递

  • 按值调用(call by value)表示方法接收的是调用者提供的值
  • 按引用调用(call by reference)表示方法接收的是调用者提供的变量地址

  Java程序设计语言总是采用值调用。也就是说,方法得到的是所有参数值得一个拷贝,方法不能修改传递给它的任何参数变量的内容。

  方法参数有两种类型

    • 基本类型的参数,因为传进方法的是原数据的一个拷贝,所以方法不能修改一个基本数据类型的参数。
    • 引用类型的参数,传递的也是一个拷贝,但引用类型的拷贝只拷贝引用变量,指向的仍然是同一个对象,看图:

          

    • 所以方法可以改变引用类型参数的状态,但不能让引用类型的参数指向一个新对象,只能让拷贝的引用变量指向新的变量,看图:

                

总结:

    • Java程序设计中对象采用的不是引用调用,实际上,对象引用进行的是值传递。
    • 一个方法不能修改一个基本数据类型的参数;
    • 一个方法可以改变一个对象参数的状态;
    • 一个方法不能实现让一个对象参数引用一个新的对象(老师说这叫地址保护)。
原文地址:https://www.cnblogs.com/tsai/p/5334796.html