Java方法参数-值传递、引用传递
- 按值调用(call by value)表示方法接收的是调用者提供的值
- 按引用调用(call by reference)表示方法接收的是调用者提供的变量地址
Java程序设计语言总是采用值调用。也就是说,方法得到的是所有参数值得一个拷贝,方法不能修改传递给它的任何参数变量的内容。
方法参数有两种类型
- 基本类型的参数,因为传进方法的是原数据的一个拷贝,所以方法不能修改一个基本数据类型的参数。
- 引用类型的参数,传递的也是一个拷贝,但引用类型的拷贝只拷贝引用变量,指向的仍然是同一个对象,看图:
-
- 所以方法可以改变引用类型参数的状态,但不能让引用类型的参数指向一个新对象,只能让拷贝的引用变量指向新的变量,看图:
总结:
-
- Java程序设计中对象采用的不是引用调用,实际上,对象引用进行的是值传递。
- 一个方法不能修改一个基本数据类型的参数;
- 一个方法可以改变一个对象参数的状态;
- 一个方法不能实现让一个对象参数引用一个新的对象(老师说这叫地址保护)。