歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java中對象與引用的理解

Java中對象與引用的理解

如下表達式:

A a1 = new A();

它代表A是類,a1是引用,a1不是對象,new A()才是對象,a1引用指向new A()這個對象。

在JAVA裡,“=”不能被看成是一個賦值語句,它不是在把一個對象賦給另外一個對象,它的執行過程實質上是將右邊對象的地址傳給了左邊的引用,使得左邊的引用指向了右邊的對象。JAVA表面上看起來沒有指針,但它的引用其實質就是一個指針,引用裡面存放的並不是對象,而是該對象的地址,使得該引用指向了對象。在JAVA裡,“=”語句不應該被翻譯成賦值語句,因為它所執行的確實不是一個賦值的過程,而是一個傳地址的過程,被譯成賦值語句會造成很多誤解,譯得不准確。

再如:

A a2;

它代表A是類,a2是引用,a2不是對象,a2所指向的對象為空null;

再如:

a2 = a1;

它代表,a2是引用,a1也是引用,a1所指向的對象的地址傳給了a2(傳址),使得a2和a1指向了同一對象。

綜上所述,可以簡單的記為,在初始化時,“=”語句左邊的是引用,右邊new出來的是對象。

在後面的左右都是引用的“=”語句時,左右的引用同時指向了右邊引用所指向的對象。

再所謂實例,其實就是對象的同義詞。

Copyright © Linux教程網 All Rights Reserved