天天看點

【Java】數組定義和通路及數組原理記憶體圖

【Java】數組定義和通路及數組原理記憶體圖

👀專欄介紹

【Java】 目前主要更新Java,一起學習一起進步。

👀本期介紹

本期主要介紹數組定義和通路及數組原理記憶體圖

文章目錄

1. 數組定義和通路

1.1 容器概述

案例分析

現在需要統計某公司員工的工資情況,例如計算平均工資、找到最高工資等。假設該公司有

50

名員

工,用前面所學

的知識,程式首先需要聲明

50

個變量來分别記住每位員工的工資,然後在進行操作,這樣做會顯得

很麻煩,而且錯

誤率也會很高。是以我們可以使用容器進行操作。将所有的資料全部存儲到一個容器中,統一操

作。

容器概念

容器:

是将多個資料存儲到一起,每個資料稱為該容器的元素。

生活中的容器:

水杯,衣櫃,教室

1.2 數組概念

數組概念:

數組就是存儲資料長度固定的容器,保證多個資料的資料類型要一緻。

1.3 數組的定義

方式一

格式:

【Java】數組定義和通路及數組原理記憶體圖

數組定義格式詳解:

數組存儲的資料類型: 建立的數組容器可以存儲什麼資料類型。

[] : 表示數組。

數組名字:為定義的數組起個變量名,滿足辨別符規範,可以使用名字操作數組。

new :關鍵字,建立數組使用的關鍵字。

數組存儲的資料類型: 建立的數組容器可以存儲什麼資料類型。

[ 長度

]

:數組的長度,表示數組容器中可以存儲多少個元素。

注意:數組有定長特性,長度一旦指定,不可更改。

和水杯道理相同,買了一個 2

升的水杯,總容量就是

2

升,不能多也不能少。

舉例:

定義可以存儲 3

個整數的數組容器,代碼如下:

【Java】數組定義和通路及數組原理記憶體圖

方式二

格式:

【Java】數組定義和通路及數組原理記憶體圖

舉例:

定義存儲 1 ,

2

3

4

5

整數的數組容器。

【Java】數組定義和通路及數組原理記憶體圖

方式三

格式:

【Java】數組定義和通路及數組原理記憶體圖

舉例:

定義存儲 1 , 2

3

4

5

整數的數組容器

【Java】數組定義和通路及數組原理記憶體圖

1.4 數組的通路

索引:

每一個存儲到數組的元素,都會自動的擁有一個編号,從

開始,這個自動編号稱為

數組索

(index)

,可以通過數組的索引通路到數組中的元素。

格式:

【Java】數組定義和通路及數組原理記憶體圖

數組的長度屬性:

每個數組都具有長度,而且是固定的,

Java

中賦予了數組的一個屬性,可以獲

取到數組的

長度,語句為: 數組名 .length ,屬性 length

的執行結果是數組的長度,

int

類型結果。由次可以推

斷出,數組的最大索引值為 數組名 .length - 1 。

【Java】數組定義和通路及數組原理記憶體圖

索引通路數組中的元素:

數組名 [ 索引 ]= 數值,為數組中的元素指派

變量 = 數組名 [ 索引

]

,擷取出數組中的元素

【Java】數組定義和通路及數組原理記憶體圖

2. 數組原理記憶體圖

2.1 記憶體概述

記憶體是計算機中的重要原件,臨時存儲區域,作用是運作程式。我們編寫的程式是存放在硬碟中

的,在硬碟中的程式是不會運作的,必須放進記憶體中才能運作,運作完畢後會清空記憶體。

Java 虛拟機要運作程式,必須要對記憶體進行空間的配置設定和管理。

2.2 Java虛拟機的記憶體劃分

為了提高運算效率,就對空間進行了不同區域的劃分,因為每一片區域都有特定的處理資料方式和

記憶體管理方式。

JVM 的記憶體劃分:

【Java】數組定義和通路及數組原理記憶體圖

2.3 數組在記憶體中的存儲

一個數組記憶體圖

【Java】數組定義和通路及數組原理記憶體圖

以上方法執行,輸出的結果是 [I@5f150435 ,這個是什麼呢?是數組在記憶體中的位址。 new 出來的

内容,都是在堆記憶體中存儲的,而方法中的變量arr 儲存的是數組的位址。

輸出

arr[0]

,就會輸出

arr

儲存的記憶體位址中數組中

索引上的元素

【Java】數組定義和通路及數組原理記憶體圖

兩個數組記憶體圖

【Java】數組定義和通路及數組原理記憶體圖
【Java】數組定義和通路及數組原理記憶體圖

兩個變量指向一個數組