java两个对象赋值_一起学Java(二十六)----- 对象之间赋值
不積跬步,無以至千里;不積小流,無以成江海。
Java語言基礎
Java對象之間賦值
賦值是用等號運算符“ = ”進行的,在對對象進行“賦值”時,實際就是將句柄從一個地方復制到另一個地方。這意味著假若為對象使用“A = B”,那么A和B最終都會指向最初只有B才指向的那個對象。也就是說這個時候他們兩個引用了同一塊內存地址.
class Number{
int i;
}
public class Test {
public static void main(String[] args) {
Number n1 = new Number();
Number n2 = new Number();
n1.i = 1;
n2.i = 2;
System.out.println("n1.i:" + n1.i);
System.out.println("n2.i:" + n2.i);
n2 = n1;
System.out.println(n1.equals(n2));
System.out.println(n1 == n2);
System.out.println("n1.i:" + n1.i);
System.out.println("n2.i:" + n2.i);
n1.i = 3;
System.out.println("n1.i:" + n1.i);
System.out.println("n2.i:" + n2.i);
}
}
程序輸出:
n1.i:1
n2.i:2
true
true
n1.i:1
n2.i:1
n1.i:3
n2.i:3
看來改變n1(n1.i = 3)的同時也改變了n2!這是由于無論n1還是n2都包含了相同的句柄,它指向相同的對象(最初的句柄位于n2內部,指向容納了值1的一個對象。在賦值過程中,那個句柄實際已經丟失;它的對象會由“垃圾收集器”自動清除)。
注意:
class Number{
int i;
}
public class Test {
public static void main(String[] args) {
Number n1 = new Number();
Number other = (Number)n1;
System.out.println(other == n1);
System.out.println(other);
System.out.println(n1);
}
}
程序輸出:
true
Hello.Number@15db9742
Hello.Number@15db9742
總結
以上是生活随笔為你收集整理的java两个对象赋值_一起学Java(二十六)----- 对象之间赋值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios 上传图片失败 小程序_微信小程序
- 下一篇: Mysql数据库常用命令,mysql速学