起因:项目中一处方法的参数String需要在调用处使用,还需要在方法内使用,并且方法此时需要返回的值有多个且包括这个参数String(现在是使用封装一个类,包含所有返回值的类)

在java中,依然是存在引用传递和值传递的:

  • 引用传递:参数进入方法后,方法在参数上做的修改,可以使得变量原型一样随之变化,因为是参数拷贝了变量的地址引用,方法通过地址引用来修改
  • 值传递:参数进入方法后,方法在参数上做的修改,不会使得原型改变,因为这里的参数是原型的一个拷贝,这里改变的是一个备份,而非数据本身

在java中,基本数据类型是值传递,而非基本类型是引用传递,但是,String因为是“不可变”的对象,导致了它的特殊性。

String对象在发生改变的时候,是产生一个新的对象,然后将指针指向新的对象。

  • 进入方法后,参数(B)与原型(A)的情况

  • 方法内对参数进行修改,修改为“b”

原型和参数此时指向的是不同的对象,所以String不能通过参数引用传递来作值的改变

如若有错,烦请指出


mackyHuang
5 声望0 粉丝

爱技术