java - 为什么按引用传递不起作用?

标签 java reference

据我所知,java中的所有内容都是通过引用传递的。但为什么在这种情况下不起作用呢?我原以为它应该打印出“恨”而不是“爱”。

class Test {
    static class Str {
        public String str;

        public void set(String str) {
            this.str = str;
        }
    }

    public static void main(String[] args) {
        Str s = new Str();

        String str = "Love";

        s.set(str);
        str = "Hate";

        System.out.println(s.str);
    }
}

最佳答案

main函数中,str仅存储对字符串的引用。当执行 str = "hate" 时,引用会发生变化,但原始对象 "love" 已存储在 s.str 中并保留在那里。

参见this以获得更多说明。

关于java - 为什么按引用传递不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15374745/

相关文章:

javascript - 为什么删除了错误的对象?

java - 有没有像用Kodo在JDO中orphanRemoval这样的方法?

java - 关闭 searchview 小部件后工具栏标题不可见

多线程和多进程的Java文件锁定方式

c++ - 当定义为模板参数时,编译器如何推断数组大小?

C - 通过 strcpy 打印 char* 行为是否矛盾?

c++ - Lambda 函数从更高范围返回左值

PHP:函数 ref 返回的值似乎在多个赋值中被复制

java - 如何调用包含 Graphics g 的函数

JavaFx 未显示在首选项窗口中