java中是通过 “值” 来拷贝或传递引用
引用的“值”的内容应该是代表了堆内存的地址
看这个例子:
public class Test {
public static void main(String[] args) throws InterruptedException {
MyObject fp = new MyObject("1");
System.out.println(fp);
foo(fp);
System.out.println(fp.name);
System.out.println(fp);
}
public static void foo(MyObject ap) {
System.out.println(ap);
ap = new MyObject("2");
System.out.println(ap.name);
System.out.println(ap);
}
}
class MyObject {
int x = 1;
String name;
public MyObject(String name) {
this.name = name;
}
}
结果:
MyObject@a90653
MyObject@a90653
2
MyObject@de6ced
1
MyObject@a90653
引用值相同的时候仅仅代表它们引用的是同一个对象,但它们本身已经是两个不同的引用了
因为方法形参中的引用已经只是实参的拷贝了
http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html