Java引用类型

Jon*_*ony 3 java

Java如何处理传递引用数据类型参数?有人能说清楚吗?

And*_*are 10

Java将引用的副本传递给方法.该引用仍指向同一实例.

想象一下,如果我有一张带有餐厅地址的纸条.你也想去同一家餐馆,所以我得到一张新纸,并将餐厅的地址复制到那张纸上并交给你.这两张纸都指向同一家餐馆,但它们是对实例的单独引用.

餐厅本身不重复,只有对它的引用是重复的.

Jon Skeet 提供了类似的类比:

气球比喻

我想象每个物体都是氦气球,每个参考都是一个弦,每个变量都可以保持在一根弦上.如果引用是一个空引用,那就像有一段字符串没有任何附加到结尾.如果它是对真实物体的引用,那么它就是一条绑在气球上的字符串,代表该物体.复制引用时(无论是用于变量赋值还是作为方法调用的一部分),就好像创建了另一段字符串,附加到第一段字符串所附加的内容.变量(如果有)保持的实际字符串不会去任何地方 - 它只被复制.

这是一个例子:

// Here I have one instance and one reference pointing to it
Object o = new Object();
// At this moment a copy of "o" is made and passed to "foo"
foo(o);

void foo(Object obj) {
    // In here I have obj which is a copy of whatever
    // reference was passed to me
}
Run Code Online (Sandbox Code Playgroud)