91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java 聲明對象(轉)

發布時間:2020-08-12 06:34:32 來源:ITPUB博客 閱讀:122 作者:ba 欄目:編程語言
java 聲明對象(轉)[@more@]正如剛才講過的,當你創建一個類時,你創建了一種新的數據類型。你可以使用這種類型來聲明該種類型的對象。然而,要獲得一個類的對象需要兩步。第一步,你必須聲明該類類型的一個變量,這個變量沒有定義一個對象。實際上,它只是一個能夠引用對象的簡單變量。第二步,該聲明要創建一個對象的實際的物理拷貝,并把對于該對象的引用賦給該變量。這是通過使用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 章學習如何處理這種異常以及其他異常情況)。對于本書中的示例程序,你不必擔心內存不足的情況,但是在實際的編程中你必須考慮這種可能性。

讓我們再次復習類和對象之間的區別。類創建一種新的數據類型,該種類型能被用來創建對象。也就是,類創建了一個邏輯的框架,該框架定義了它的成員之間的關系。當你聲明類的對象時,你正在創造該類的實例。因此,類是一個邏輯構造,對象有物理的真實性(也就是對象占用內存空間)。弄清楚這個區別是很重要的。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平顺县| 定日县| 曲阳县| 赫章县| 阳西县| 池州市| 普宁市| 宁陕县| 轮台县| 大冶市| 广德县| 桐庐县| 金阳县| 西平县| 建昌县| 靖江市| 巢湖市| 天柱县| 榆树市| 永泰县| 饶平县| 若羌县| 平山县| 晋州市| 杭锦旗| 扬州市| 阳原县| 逊克县| 阳城县| 乌兰察布市| 东港市| 南宫市| 南皮县| 海晏县| 绥江县| 河西区| 嘉峪关市| 织金县| 大洼县| 丹棱县| 玉林市|