java两个对象赋值_一起学Java(二十六)----- 对象之间赋值
不積跬步,無(wú)以至千里;不積小流,無(wú)以成江海。
Java語(yǔ)言基礎(chǔ)
Java對(duì)象之間賦值
賦值是用等號(hào)運(yùn)算符“ = ”進(jìn)行的,在對(duì)對(duì)象進(jìn)行“賦值”時(shí),實(shí)際就是將句柄從一個(gè)地方復(fù)制到另一個(gè)地方。這意味著假若為對(duì)象使用“A = B”,那么A和B最終都會(huì)指向最初只有B才指向的那個(gè)對(duì)象。也就是說(shuō)這個(gè)時(shí)候他們兩個(gè)引用了同一塊內(nèi)存地址.
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
看來(lái)改變n1(n1.i = 3)的同時(shí)也改變了n2!這是由于無(wú)論n1還是n2都包含了相同的句柄,它指向相同的對(duì)象(最初的句柄位于n2內(nèi)部,指向容納了值1的一個(gè)對(duì)象。在賦值過(guò)程中,那個(gè)句柄實(shí)際已經(jīng)丟失;它的對(duì)象會(huì)由“垃圾收集器”自動(dòng)清除)。
注意:
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
總結(jié)
以上是生活随笔為你收集整理的java两个对象赋值_一起学Java(二十六)----- 对象之间赋值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ios 上传图片失败 小程序_微信小程序
- 下一篇: Java学习之IDEA2020安装