值传递修改后不会影响原数据。
引用传递传递的是对象的引用,修改对象的值后原始数据也会一起修改
我发现string和基础类型传递到方法里面做修改后不会影响方法外的数据,其他对象和StringBuilder修改后就可以。
我能不能理解为string和对象一样都是引用传递。但是string是不能改变的,所以修改后会生成一个新的引用,但不会改变原始的数据。
有没有人能帮忙解释一下或有没有文章博客推荐我看看。
你的理解是对的,就是这样 String和对象一样都是引用传递。但是string是不能改变的,所以修改后会生成一个新的引用,但不会改变原始的数据
。
下面这篇文章可以看看,但是他这篇文章有个错误。正确的是:String不可变的根本原因是,String对象中的底层char[]数组被final
修饰,导致String实例对象无法修改字符,只能通过修改方法重建一个新的String实例。
String是final修饰,其内存地址在创建对象后就不可以修改。
其中 135都是原始的内存地址。4是新地址
首先,Java中只有值传递,没有引用传递。
对于对象类型的变量,变量的值是对象的地址,传的也是对象的地址(这会使得方法内外引用同一个对象);
但是String 类型是final类型,不可变对象,对 String 类型值的任何操作,都会产生新的String对象。
可以看一下这个:https://blog.csdn.net/qq_34178598/article/details/78806702