iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0

陣列

Java中的array(陣列)屬於引用的數據類型,是Java中的一種儲存容器(儲存在記憶體),可以存放任何的數據型別,包括基本型別和引用型別。

複習一下基本型別:

  • 整數:byteshortintlong
  • 浮點數:floatdouble
  • 字符:char
  • 布林:boolean

引用型別:

  • 類(Classes)
  • 接口(Interfaces)
  • 陣列(Arrays)
  • 枚舉(Enums)
  • 記錄(Records)
  • 註解(Annotations)

array有幾個特性:

  1. 有順序的排列,因此array會有一個長度length
  2. 每個元素都是緊密連接在記憶體當中。
  3. 每個元素對應一個index(索引)。
  4. 第一個index0 開始,所以array 最後一個元素的index 會是arraylength - 1
index
0 台北
1 新北
2 桃園
3 新竹
4 苗栗
5 台中
6 彰化
7 雲林

💡 以上方的表格來對應,array的第1個是台北,但是它的索引會是0。


array需要關注的重點:

  1. 聲明和初始化。
  2. 調用array的指定元素。
  3. array屬性:例如length代表array長度。
  4. array的遍歷。遍歷:對每一個元素進行操作。
  5. 元素的初始化。
  6. 一維array的記憶體解析。

宣告array的方式

第一種:靜態宣告(在宣告array時就將值一起賦值)

int[] arr;
arr = new int[]{1,2,3,4};

int[] arr1 = new int[]{1,2,3,4}; // 也可以這樣寫
int[] arr2 = {1,2,3,4}; // 也可以這樣寫

第二種:動態宣告

int[] arr;
arr = new int[4];
arr[0] = 1
arr[1] = 2;
System.out.println(arr[0]); // 1

錯誤:

這樣寫會報錯,因為宣告array的長度為4,所以在index 為 4 (array的第5個位置)賦值已經超出array的長度。

int[] arr = new int[4];
arr[4] = 10; 

💡為什麼無法新增第5個值在array的第5個位置,因為當宣告array時,長度已經被固定在記憶體中,在宣告時會根據array的長度找到能夠放進這個長度的位置,在這個長度外的位置(不管是前後左右)有可能已經拿去存放其他的值,所以無法將array的長度更動,如果真的要增加長度,必須新增一個新的array(一般會使用複製的方式去新增)。


調用array: 透過array的變數名和index

int[] arr = {1,2,3,4};
System.out.println(arr[0]); // 1

遍歷array:透過array.length可以取得array的長度,再使用for循環即可對array的每一個元素進行相對應的操作。

int[] arr = {1,2,3,4};
for(int i = 0; i < arr.length; i++) {
	System.out.println(arr[i]);
}

// 1
// 2
// 3
// 4

如果在宣告array時使用動態宣告,但是並未賦值時,每一個相對應的型別都有自己的初始值:

  • 整數型別(byte、short、int、long ): 0
  • 浮點型別(float、double): 0.0
  • 字符型別(char): 0 (也可以看成是用'\u0000')
  • boolean型別: false
  • 引用型別(Classes、Interfaces、Arrays、Enums、Records、Annotaions): null

💡靜態宣告時也可看成是一開始宣告時都是初始值,只是又馬上將初始值轉換成所賦的值。


上一篇
Day8-圈圈圓圓圈圈(循環啦)
下一篇
Day10-陣列(二)
系列文
前端工程師的java學習紀錄38
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言