Java中對(duì)象賦值是將一個(gè)對(duì)象的引用賦值給另一個(gè)對(duì)象變量,從而使它們指向同一個(gè)對(duì)象。
對(duì)象賦值的基本操作
在Java中,對(duì)象的賦值有兩種基本方式:淺拷貝和深拷貝。淺拷貝是將對(duì)象的引用地址賦給另一個(gè)對(duì)象,而不是復(fù)制對(duì)象本身。深拷貝是創(chuàng)建一個(gè)新的對(duì)象,并將原對(duì)象的所有屬性值拷貝到新對(duì)象中,兩個(gè)對(duì)象沒(méi)有任何關(guān)聯(lián)。
賦值會(huì)覆蓋原對(duì)象
在Java中,如果將一個(gè)對(duì)象的引用賦值給另一個(gè)對(duì)象,它們將指向同一個(gè)對(duì)象。因此,在修改其中一個(gè)對(duì)象的屬性值時(shí),另一個(gè)對(duì)象的屬性值也會(huì)隨之改變。例如:
// 定義一個(gè)Person類(lèi)class Person { String name; int age;}// 創(chuàng)建一個(gè)Person對(duì)象Person person1 = new Person();person1.name = "Michael";person1.age = 18;// 將person1對(duì)象的引用賦值給person2對(duì)象Person person2 = person1;// 修改person2對(duì)象的屬性值person2.name = "Alex";// 輸出person1對(duì)象和person2對(duì)象的屬性值System.out.println(person1.name); // AlexSystem.out.println(person2.name); // Alex
在上述例子中,person2對(duì)象的屬性值被修改后,person1對(duì)象的同名屬性值也被修改了。這是因?yàn)镴ava中的對(duì)象引用本質(zhì)上是一個(gè)指向內(nèi)存地址的變量,當(dāng)一個(gè)引用被賦值給另一個(gè)變量時(shí),它們將引用同一個(gè)內(nèi)存地址,從而使得對(duì)象的屬性值可以被共享。