Java 参数传递:值与引用
在 Java 中,参数传递语义不同于 C# 等语言,其中“ref”关键字明确指示引用传递。
围绕引用的混乱传递
Java 的“按值传递”性质让开发人员感到困惑,因为引用类型(如对象)的参数实际上是通过引用传递的。然而,这个“引用”只是对象的内存位置,而不是对象本身。
值传递演示
考虑以下代码片段:
Object o = "Hello"; mutate(o); System.out.println(o); private void mutate(Object o) { o = "Goodbye"; }
这段代码会在控制台打印“Hello”,因为 mutate 方法中的“o”参数实际上指的是一个副本的原始参考。为该副本分配新值不会影响原始对象的值。
参考修改的替代选项
要修改原始对象,有两个选项:
AtomicReference<Object> ref = new AtomicReference<Object>("Hello"); mutate(ref); System.out.println(ref.get()); // Goodbye! private void mutate(AtomicReference<Object> ref) { ref.set("Goodbye"); }
以上是Java 的参数传递是真正的按值传递,还是更加细致入微?的详细内容。更多信息请关注PHP中文网其他相关文章!