class Number{
int i;
}public class Assignment{
public static void main(Sting [] args){
Number n1= new Number();
Number n2= new Number();
n1.i=8;
n2.i=48;
System.out.println("1:n1.i:"+n1.i+"n2.i:"+n2.i);
n1=n2;
System.out.println("1:n1.i:"+n1.i+"n2.i:"+n2.i);
n1.i=24;
System.out.println("1:n1.i:"+n1.i+"n2.i:"+n2.i); //这里不明白问题是这里只是把n1.i赋值怎么会改变n2.i的值呢。
int i;
}public class Assignment{
public static void main(Sting [] args){
Number n1= new Number();
Number n2= new Number();
n1.i=8;
n2.i=48;
System.out.println("1:n1.i:"+n1.i+"n2.i:"+n2.i);
n1=n2;
System.out.println("1:n1.i:"+n1.i+"n2.i:"+n2.i);
n1.i=24;
System.out.println("1:n1.i:"+n1.i+"n2.i:"+n2.i); //这里不明白问题是这里只是把n1.i赋值怎么会改变n2.i的值呢。
n1=n2;
导致n1和n2这两个变量引用到同一个对象上去了,就是原来n2引用着的那个。
原来被变量n1引用着的对象成为垃圾,可随时被垃圾回收器收掉了。
这样n1和n2指向的是同一块内存地址,即这个时候n1和n2已经是同一个对象了,你操作n1就等于是操作n2了,而你这个时候在执行下一句代码"n1.i=24"
就等于是在操作n2了,所以n2值也改变了
给分吧,朋友,我实在没分了
int i;
}class Assignment{
public static void main(String[] args){
Number n1= new Number();
Number n2= new Number();
n1.i=8;
n2.i=48;
System.out.println("1:n1.i:"+n1.i+"n2.i:"+n2.i);
n1=n2;
System.out.println("1:n1.i:"+n1.i+"n2.i:"+n2.i);
n1.i=24;
System.out.println("1:n1.i:"+n1.i+"n2.i:"+n2.i);
}
}
==================================================
你写的不标准哟...我修改了哈.,两个引用指向了同一个对象,所以不对拉
System.out.println("1:n1.i:"+n1.i+"n2.i:"+n2.i);
=========================
把这一句取消了,再中和他们的意思.再运行哈,你就明白了