我知道在Java中,所有东西都是按值传递的。但对于对象来说,传递的是对象引用的值。这意味着有时候一个对象可以通过参数被改变,这也就是为什么人们说“永远不要修改参数”的原因。
但在下面的代码中,发生了一些不同的事情。当你回到main()时,changeIt()中的s并没有改变:
我猜测,也希望得到确认,当你说
但在下面的代码中,发生了一些不同的事情。当你回到main()时,changeIt()中的s并没有改变:
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()
后被丢弃了吗?