请看下面代码:
public void tricky(Point arg1, Point arg2)
{
arg1.x = 100;
arg1.y = 100;
Point temp = arg1;
arg1 = arg2;
arg2 = temp;
}
public static void main(String [] args)
{
Point pnt1 = new Point(0,0);
Point pnt2 = new Point(0,0);
System.out.println("X: " + pnt1.x + " Y: " +pnt1.y);
System.out.println("X: " + pnt2.x + " Y: " +pnt2.y);
System.out.println(" ");
tricky(pnt1,pnt2);
System.out.println("X: " + pnt1.x + " Y:" + pnt1.y);
System.out.println("X: " + pnt2.x + " Y: " +pnt2.y);
}
结果:
X: 0 Y: 0
X: 0 Y: 0
X: 100 Y: 100
X: 0 Y: 0
arg1, arg2 是引用,当交换引用时,实际是起重用了,类似c++
java除了基本数据类型,所有对象都是引用
main(){
Student st=new Student();
addStudent(st);
}
void addStudent(Student st){
//这里的st对象就是引用前面创建的st
}
java的对象名字都是引用。
Object a = new Object(), b = new Object();
a = b; // 现在a 和 b都是同一个对象的引用。