Java基礎資料型別 (Elementary Data Type)記憶體配置

來源:互聯網
上載者:User

標籤:類型   類成員變數   short   處理   ram   重要   地方   oat   堆記憶體   

1.java程式運行時有6中地方儲存資料,分別是:寄存器、棧、堆、靜態儲存、常量儲存、非RAM(隨機儲存空間),主要是堆與棧的儲存。  2.堆與棧是java用來在RAM中儲存資料的地方,java自動管理堆和棧,程式員不能直接設定堆和棧。  3.棧的優勢是:存取速度比堆要快,僅次於直接位於cpu中的寄存器;棧資料可以共用。   但缺點是:存在棧中資料大小與生命週期必須是確定的,缺乏靈活性。 4.堆的優勢在於可以動態分配記憶體大小,生存期也不必事先告訴編譯器,java的垃圾收集器會自動收走這些不再使用的資料,缺點是由於要在運行時動態分配記憶體,存取速度較慢。 5.基礎資料型別 (Elementary Data Type)的儲存,java的基礎資料型別 (Elementary Data Type)共有8種:int,short,byte,long,float,double,boolean,(基礎資料型別 (Elementary Data Type)中並沒有String的基本類型)。這種類型如int=3的形式來定義,稱為自動變數。自動變數存在的是字面值,即不是類的執行個體,也不是類的引用。a 是一個指向int類型的引用,指向3這個字面值。這些字面值的資料由於大小可知,生存期可知(這些字面值固定定義在某個程式塊裡面,程式塊退了,欄位值就消失了),處於追求速度的原因就存在棧中。  6.另外棧有一個很重要的特殊性,就是存在棧中的資料可以共用。如 需要定義int a = 3; int b =3;這兩個自動變數。編譯器先處理int  a=3;首先在棧中建立一個變數為a的引用,然後尋找棧有沒有字面值為3的引用,沒有找到,就開闢一個存放3這個字面值的地址,然後將a指向3的地址。接著處理int b=3;在建立完b這個引用變數後,由於在棧中已經有了3這個字面值,即將b直接指向3的地址。這樣,就出現了a和b同事指向3的情況。 定義完a與b後,在令a=4,那麼b不會等於4,而是等於3,。在編譯器內部,遇到時,它就會中新搜尋棧中是否有4這個字面值,如果沒有,重新開闢地址存放4的值。如果已經有就直接將a指向這個地址,因此a的值改變不會影響b的值。  7.對象的記憶體模型.建立一個對象包括對象的聲明和執行個體化兩步:聲明對象的引用和對象的執行個體化。聲明一個對象引用時,將在棧記憶體為對象的引用變數分配空間;對象執行個體化是,在堆記憶體中為類成員變數分配記憶體,並將其初始化為各資料類型預設值,接著進行顯示初始化,最後調用構造方法為成員變數賦值,返回堆記憶體中對象的引用(相當於首地址)給應用變數,通過引用變數來引用堆記憶體中的對象。  8.封裝類資料的儲存:基礎資料型別 (Elementary Data Type)的定義都是直接在棧中,如果是封裝類型來建立對象,就和普通對象一樣。  9.string資料類型是一種特殊資料類型,既可以用基礎資料型別 (Elementary Data Type)格式來建立,也可以用普通基本類型來建立。

Java基礎資料型別 (Elementary Data Type)記憶體配置

聯繫我們

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