我知道在 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()?