【Java基礎】——數組

來源:互聯網
上載者:User

噹噹買的新書今天到了,叫《瘋狂Java突破程式員基本功的16課》。我記得羅永浩好像說過什麼打著幾天速成/瘋狂/輕鬆之類旗號的都不靠譜,其實我也是抱著不靠譜的心態買的這書。但是今天到手後看來……還是那個事,比較適合我這種基本功薄弱的菜鳥。雖說我做了快3年的Java,但是說實話我根本就沒有學過Java,現在用的所有開發技巧都是早年學C語言時學的(現在C語言壓根就不會了。。。)。所以這本書比較補內功心法,推薦跟我一樣Java入門的菜鳥看看。

Java的數組跟對象類似,屬於參考型別的變數。

Java語言是典型的靜態語言,因此Java的數組是靜態,即當數組被初始化後該數組的長度不可改變。

初始化數組的方式有兩種:靜態初始化/動態初始化。

靜態初始化:

String[] books = new String[]{    "a",    "b"}String[] names = {    "c",    "d"}

動態初始化:

String[] strArr = new String[5];

OK,Java數組就講到這裡,下面講講數組的記憶體配置。

再講記憶體配置之前先介紹四個關鍵字:

棧記憶體、堆記憶體、變數、對象

這裡最關鍵的就是變數與對象的區別,我們看一個例子:People p =
new People();這裡紅色的就是變數,而藍色的就是對象

下面我們來分析一下基本類型數組的初始化過程:

int [] iArr;iArr = new int[]{2, 5};

1.在main棧記憶體申請iArr空間;

2.在堆記憶體中申請int型2和5的連續空間;

3.將連續空間的地址值賦給棧記憶體中的iArr。


下面我們再來分析一下參考型別數組的初始化過程:

Person[] students;students = new Person[2];Person p1 = new Person();Person P2 = new Person();students[0] = p1;students[1] = p2;

1.在main棧記憶體申請students空間;

2.在堆記憶體中申請2個連續空間;

3.在main棧記憶體中申請p1空間;

4.在堆記憶體中申請p1對象空間,並把地址值給棧記憶體中的p1;

5.在main棧記憶體中申請p2空間;

6.在堆記憶體中申請p2對象空間,並把地址值給棧記憶體中的p2;

7.將p1對象的地址值給堆記憶體中的students[0];

8.將p2對象的地址值給堆記憶體中的students[1]。


===============================================================================================

有些書籍這樣描述:

基本類型變數的值儲存在棧記憶體中。(這句話是錯誤的,例子中基礎資料型別 (Elementary Data Type)的值2、5都是存放在堆記憶體裡的)

正確的描述應為:

所有局部變數都是放在棧記憶體裡儲存的,不管其是基礎資料型別 (Elementary Data Type)變數還是參考型別的變數,都是儲存在各自的方法棧地區中;但參考型別變數所引用的對象(包括數組、普通Java對象)則總是儲存在堆記憶體中。

請看下面這個例子:

int k = 5;//k在棧記憶體中,儲存的值是5,也就說5在棧記憶體中

People p = new People();//p在棧記憶體中,儲存的值是new People()的地址值,new People()在堆記憶體中

int[] s = {5};//s在棧記憶體中,儲存的值是{5}的地址值,{5}在堆記憶體中,也就說5在堆記憶體中。

這裡還引出了一個概念就是:

數組元素就是變數

int[] iArr = new int[5];

int n;

n與iArr[x]都是變數。

本節的重點:

1.Java數組的基本文法;

2.數組的靜態特性;

3.數組的記憶體配置機制;

4.初始化Java數組的兩種方式;

5.數組引用變數和數組對象;

6.數組元素等同於變數。

聯繫我們

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