【轉】控制代碼、引用、指標與對象

來源:互聯網
上載者:User

標籤:

(1)指標是對象在記憶體中的地址;(2)引用是對象的別名,其實質就是功能受限但是安全性更高的指標;(3)控制代碼是指標的指標,控制代碼實際上是一個資料,是一個Long (整長型)的資料。控制代碼是一個標識符,是拿來標識對象或者項目的,它就象我們的姓名一樣。Windows是一個以虛擬記憶體為基礎的作業系統。在這種系統內容下,Windows記憶體管理器經常在記憶體中來回移動對象,依此來滿足各種應用程式的記憶體需要。對象被移動意味著它的地址變化了。如果地址總是如此變化,我們該到哪裡去找該對象呢?為瞭解決這個問題,Windows作業系統為各應用程式騰出一些記憶體儲地址,用來專門登記各應用對象在記憶體中的地址變化,而這個地址(儲存單元的位置)本身是不變的。Windows記憶體管理器在移動對象在記憶體中的位置後,把對象新的地址告知這個控制代碼地址來儲存。

然後我們回到JAVA來解釋這個問題:

Java中有3個資料類型:基礎資料型別 (Elementary Data Type)、參考型別和null類型。其中,參考型別包括類類型(含數組)、介面類型。為了區別參考型別的變數標識符和基礎資料型別 (Elementary Data Type)變數標識符,我們特別的(特意的)使用Handle來稱呼參考型別的變數標識符。對象的引用是建立對象時的傳回值!引用是new運算式的傳回值。new A(); 這裡真正建立了一個對象,但我們沒有用控制代碼去持有(hold、拿著、儲存)該引用。handle是變數,reference是一種變數值。

A a = new A() ;

 

 

(1)控制代碼a——常見為A a;或A a=new A();前者沒有被初始化,後者被手工初始化。(如果a是一個類的成員變數,會被預設初始化。)控制代碼不同於基本變數的關鍵,它是一種間接定址方式。控制代碼聲明常常稱為對象聲明(如果你感到可能引起混淆,不理睬對象聲明的說法好啦)。

 

(2)建立對象——new A();這才是真正的建立對象。對象一般通過new運算式來建立。

(3)計算new運算式的值:計算new運算式的值的整個過程,在微觀上完成了對象的建立和這個對象自己的成員變數的初始化,在宏觀上得到new運算式的值,這個值稱為新對象的引用;

(4)引用:new A()的值。引用可以簡單的看作對象佔據記憶體空間的地址;通過對象的引用,就可以方便的與其他對象區別開來,引用就是對象獨特的身份標識。

(5)控制代碼的初始化:控制代碼 = 引用;即把引用賦值給控制代碼,如語句a=new A();完成控制代碼的初始化後,就可以用控制代碼遙控對象了。

(6)對於語句A a=new A();是對象建立及對象初始化與控制代碼的初始化的合并。

轉自:http://www.cnblogs.com/lsjwzh/archive/2010/05/08/1730480.html

【轉】控制代碼、引用、指標與對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.