我知道在 Java 中,一切都是按值传递的。但是对于对象来说,传递的是对对象的引用的值。这意味着有时可以通过参数更改对象,这就是为什么,我猜,人们说,永远不要修改参数。
但是在下面的代码中,发生了一些不同的事情。 s
当您返回时inchangeIt()
不会改变main()
:
public class TestClass {
static String str = "Hello World";
public static void changeIt( String s ) {
s = "Good bye world";
}
public static void main( String[] args ) {
changeIt( str );
System.out.println( str );
}
}
我猜——我想确认一下——当你说它s = "something"
与说相同或等同时String s = new String("something")
。这就是为什么s
不改变?它是否在本地分配了一个全新的对象,一旦退出就会被丢弃changeIt()
?