改变了str也应该改变了s哇,但当我打印时,s并没有发生改变,这是为什么?

代码目的:反转字符串中start到end的部分字符;
问题:
我在reverse函数中,把s传过去了,此时为引用传递;在rever里面用str接收,最后str = new String(arr);,此时的str不应该就是新的arr数组吗,改变了str也应该改变了s哇,但当我打印时,s并没有发生改变,这是为什么?

img


img

你这个是没办法改变s的,字符串是只读的,函数内改变s其实不会改变本来s的内容,而是指向了新的字符串对象

你只是把s的地址传递给了str,在函数reverse里面,并没有对str进行地址的改变,因而也就不会对s产生影响,从而s的值就一直没变啊