Java數組初始化與記憶體控制

來源:互聯網
上載者:User

一、Java數組是靜態

Java是典型的靜態語言,Java數組自然也是靜態,即當數組被初始化後,數組的長度是不可變的;


二、何謂數組初始化

所謂數組初始化,就是在堆記憶體中為數組對象分配一塊連續的記憶體空間,並為每個數組元素指定初始值。


三、數組初始化方式

有兩種方式:

1、靜態初始化:由程式員顯式指定每個數組元素的初始值,由系統確定數組大小;

2、動態初始化:由程式員指定數組大小,由系統為每個數組元素分配初始值;


四、陣列變數與數組對象


陣列變數:

陣列變數是一種引用變數類型(本質就是指標),建立在棧區中;(在Java中,所有的局部變數都存放在棧區中,不管是基礎資料型別 (Elementary Data Type)(int、short、long、byte、boolean、char、float等)變數,還是參考型別變數;Java中堆記憶體中的對象通常不允許直接存取,為了訪問其中對象,只能通過棧區的引用對象)

如String[] books = new String[5];中books就是陣列變數;


數組對象:

數組對象是“真正的數組”,建立在堆記憶體中;

對於基本類型的數組對象,資料元素值直接存放在初始化分配的記憶體空間中;而對於複雜類型(如String)的數組對象,初始化分配的記憶體空間同樣為引用,引用(指向)常量池(Constant Pool)或其他記憶體地區的對象;

如String[] books = new String[5];中new String[5]就是數組對象;


它們的關係:

該陣列變數,引用(指向)堆記憶體中數組對象;


總結:

所以請始終記住:Java的陣列變數是參考型別的變數,他並不是數組對象本身,並不需要進行初始化,只要讓陣列變數指向堆記憶體中有效數組對象,程式就可以使用該陣列變數,該引用變數就會由它所引用的對象代替,系統就會自動變為訪問堆記憶體中相應的數組對象。


聯繫我們

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