对于Java赋值来说,会当讲两个对象用“=”连接起来的时候,我们实际上操作的是他的句柄,换句话来说,以下方代码举例,如果采用 n1 = n2,n1和n2都会指向最初n2所指向的那个对象。
但是如果是采用 n1.i=n2.i 方式进行进行元素的复制,则会当做普通常数复制处理。
package property;
class Number{
int i;
}
public class Property {
public static void main(String[] args){
Number n1 = new Number();
Number n2 = new Number();
n1.i = 9;
n2.i = 47;
System.out.println("1:n1.i="+n1.i+" 2:n2.i="+n2.i);
n1.i = n2.i;//注意与n1=n2的区别,
System.out.println("1:n1.i="+n1.i+" 2:n2.i="+n2.i);
n1.i = 88;
System.out.println("1:n1.i="+n1.i+" 2:n2.i="+n2.i);
n2.i = 66;
System.out.println("1:n1.i="+n1.i+" 2:n2.i="+n2.i);
}
}
运算结果分别为:
n1 = n2;
1:n1.i=47 2:n2.i=47
1:n1.i=88 2:n2.i=88
1:n1.i=66 2:n2.i=66
n1.i = n2.i;
1:n1.i=47 2:n2.i=47
1:n1.i=88 2:n2.i=47
1:n1.i=88 2:n2.i=66
我们发现此时两个数值没有同步。