java 聲明對象

來源:互聯網
上載者:User

正如剛才講過的,當你建立一個類時,你建立了一種新的資料類型。你可以使用這種類型來聲明該種類型的對象。然而,要獲得一個類的對象需要兩步。第一 步,你必須聲明該類類型的一個變數,這個變數沒有定義一個對象。實際上,它只是一個能夠引用對象的簡單變數。第二步,該聲明要建立一個對象的實際的物理拷 貝,並把對於該對象的引用賦給該變數。這是通過使用new 運算子實現的。new運算子為對象動態分配(即在運行時分配)記憶體空間,並返回對它的一個引用。這個引用或多或少的是new分配給對象的記憶體位址。然後這 個引用被儲存在該變數中。這樣,在Java 中,所有的類對象都必須動態分配。讓我們詳細看一下該過程。

在前面的例子中,用下面的語句來聲明一個Box類型的對象:

Box mybox = new Box();

本例將上面講到的兩步組合到了一起,可以將該語句改寫為下面的形式,以便將每一步講的更清楚:

Box mybox; // declare reference to object
mybox = new Box(); // allocate a Box object

第 一行聲明了mybox ,把它作為對於Box類型的對象的引用。當本句執行後,mybox 包含的值為null ,表示它沒有引用對象。這時任何引用mybox 的嘗試都將導致一個編譯錯誤。第二行建立了一個實際的對象,並把對於它的引用賦給mybox 。現在,你可以把mybox 作為Box的對象來使用。但實際上,mybox 僅僅儲存實際的Box 對象的記憶體位址。這兩行語句的效果6-1 所示。

圖6-1 聲明Box 類型的對象
注意:那些熟悉C/C++ 語言的讀者,可能已經注意到了對象的引用看起來和指標類似。這種懷疑實質上是正確的。一個對象引用和記憶體指標類似。主要的差別(也就是Java安全的關 鍵)是你不能像實際的指標那樣來操作它。這樣,對於對象引用,你就不能像指標那樣任意分配記憶體位址,或像整數一樣操作它。

6.2.1 深入研究new 運算子

剛才已經解釋過,new運算子動態地為一個對象分配地址。它的通用格式如下:

class-var = new classname( );

其 中,class-var 是所建立類類型的變數。classname 是被執行個體化的類的名字。類的後面跟的圓括弧指定了類的建構函式。建構函式定義當建立一個類的對象時將發生什麼。建構函式是所有類的重要組成部分,並有許多 重要的屬性。大多數類在他們自己的內部顯式地定義建構函式。如果一個類沒有顯式的定義它自己的建構函式,那麼Java 將自動地提供一個預設的建構函式。對類Box 的定義就是這種情況。現在,我們將使用預設的建構函式。不久,你將看到如何定義自己的建構函式。

這 時,你可能想知道為什麼對整數或字元這樣的簡單變數不使用new 運算子。答案是Java 的簡單類型不是作為對象實現的。出於效率的考慮,它們是作為“常規”變數實現的。你將看到,對象有許多特性和屬性,使Java 對對象的處理不同於簡單類型。由於對處理對象和處理簡單類型的開銷不同,Java 能更高效地實現簡單類型。後面,你將看見,對於那些需要完全物件類型的情況下,簡單類型的對象版本也是可用的。

理 解new運算子是在運行期間為對象分配記憶體的是很重要的。這樣做的好處是你的程式在運行期間可以建立它所需要的記憶體。但是,記憶體是有限的,因此new有可 能由於記憶體不足而無法給一個對象分配記憶體。如果出現這種情況,就會發生運行時異常(你將在第10 章學習如何處理這種異常以及其他異常情況)。對於本書中的樣本程式,你不必擔心記憶體不足的情況,但是在實際的編程中你必須考慮這種可能性。

讓 我們再次複習類和對象之間的區別。類建立一種新的資料類型,該種類型能被用來建立對象。也就是,類建立了一個邏輯的架構,該架構定義了它的成員之間的關 系。當你聲明類的對象時,你正在創造該類的執行個體。因此,類是一個邏輯構造,對象有物理的真實性(也就是對象佔用記憶體空間)。弄清楚這個區別是很重要的。


-----引用中國軟體安全同盟文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.