首先你这个程序p1和p2没有实力化,运行会报空指针异常。 如果实力化后,例如这样 Point p1 = new Point();//1 Point p2 = new Point();//2 p1=p2;//3p1.x=200;//4 p1.y=200;//5 在第一行,实力化一个对象Point()放在内存的堆中。然后栈中的p1指向了这个内存中的Point对象 第二行,同样实力化一个对象Point()放在内存的堆中。然后栈中的p2指向了这个内存中的Point对象 第三行的时候p1和p2共同指向了第一行的那个Point对象的内存地址。这个时候p2原来所指向的那个Point对象过段时间会被JVM垃圾回收器回收 第四行和第五行为p1的x和y属性赋值,由于p1和p2这个时候指向了同一个内存所以此时p2.x=200;同样p2.y=200
此时..pt2和pt1指向的应该是同一内存地址.
class ReferencesTest{
public static void main(String[] args){
Point pt1,pt2;
pt1=new Point();//只创建了一个对象
pt2=pt1;//使pt2也指向那个刚刚创建的对象,即pt1 pt2引用的是一个对象
pt1.x=200;
pt1.y=200;
System.out.println("Point1n:"+pt1.x+","+pt1.y);
System.out.println("pointln:"+pt2.x+","+pt2.y);
}
}
不然会出现空指针异常的。 class ReferencesTest{
public static void mian(string[] args){
Point pt1=new Point(),pt2;
pr2=pt1;
pt1.x=200;
pt1.y=200;
system.out.println("Point1n:"+pt1.x+","+pt1.y};
system.out.println("pointln:"+pt2.x+","+pt2.y);
}
}
http://dev.csdn.net/author/beepbug/f5c70b05579f46d4996ce9da4f75dbc0.html
如果实力化后,例如这样
Point p1 = new Point();//1
Point p2 = new Point();//2
p1=p2;//3p1.x=200;//4
p1.y=200;//5
在第一行,实力化一个对象Point()放在内存的堆中。然后栈中的p1指向了这个内存中的Point对象
第二行,同样实力化一个对象Point()放在内存的堆中。然后栈中的p2指向了这个内存中的Point对象
第三行的时候p1和p2共同指向了第一行的那个Point对象的内存地址。这个时候p2原来所指向的那个Point对象过段时间会被JVM垃圾回收器回收
第四行和第五行为p1的x和y属性赋值,由于p1和p2这个时候指向了同一个内存所以此时p2.x=200;同样p2.y=200