String做参数引用传递能够修改原值吗

原由:项目中一处方法的参数String须要在调用处使用,还须要在方法内使用,而且方法此时须要返回的值有多个且包括这个参数String(如今是使用封装一个类,包含全部返回值的类)

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

  • 引用传递:参数进入方法后,方法在参数上作的修改,可使得变量原型同样随之变化,由于是参数拷贝了变量的地址引用,方法经过地址引用来修改
  • 值传递:参数进入方法后,方法在参数上作的修改,不会使得原型改变,由于这里的参数是原型的一个拷贝,这里改变的是一个备份,而非数据自己

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

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

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

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

原型和参数此时指向的是不一样的对象,因此String不能经过参数引用传递来做值的改变

如如有错,烦请指出

相关文章
相关标签/搜索