0

我已经完成了一些关于Java总是按值传递的答案,例如在下面的代码中。

public class Sample {

public void show(String s){
    s="A";
}

public static void main(String []args) {
        String s="B";
        new Sample().show(s);
        System.out.println(s);
    }
}

String s;意味着只创建了一个引用,正如我的老师所说的那样,在上面的代码中没有创建任何对象s=B;手段s持有B即在内存中存储它的位置的引用,我对此的理解是否正确?

什么时候 doshow(s);在方法show的定义中没有创建新String对象,只是传递了引用。

main方法中创建的字符串 s和show方法中创建的字符串都引用了内存中的同一个对象,如果两者都引用同一个对象,“A”不应该打印到屏幕上吗?

两者都引用同一个对象,那么为什么“A”不被打印而“B”被打印?

我是Java新手我已经阅读了一些关于这个问题的先前答案,一个带有2个指向同一对象的参考箭头的图表的答案让我更加困惑我可能误解了答案所以请不要关闭我的问题它被重复了,我需要一些帮助。

4

1 回答 1

1

它是按引用传递的,但引用本身是按值传递的,并且在show您覆盖引用。这就是为什么你应该教指针:/

于 2013-06-07T19:13:41.863 回答