java 中的別名機制
阿新 • • 發佈:2018-10-31
將一個物件賦值給另一個物件,實際是將引用從一個地方複製到另一個地方。這意味著假若對物件使用c=d,那麼c和d都指向原本只有d指向的那個物件,下面這個例子將向大家闡釋這點。
package gao.com; class Test{ int number; } public class Assigment { public static void main(String[]args){ Test t1=new Test(); Test t2=new Test(); t1.number=25; t2.number=32; System.out.println("t1.number="+t1.number+" t2.number="+t2.number); t1=t2; System.out.println("t1.number="+t1.number+" t2.number="+t2.number); t1.number=1; System.out.println("t1.number="+t1.number+" t2.number="+t2.number); } } /* 輸出 t1.number=25 t2.number=32 t1.number=32 t2.number=32 t1.number=1 t2.number=1 */
Test 類非常簡單,它的兩個例項是在main()裡建立的。對每個Test類物件number域都賦予了一個不同的值。然後將t2賦給t1,接著又修改了t1.在很多語言中我們會期望t1和t2總是相互獨立,但由於賦值操作是一個物件的引用,所以修改t1的時候也改變了t2,這是由於t1和t2包含相同的引用,它們指向相同的物件。