iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0

陣列的介紹

在我們需要處理很多個相同性質且相同型別的資料,可以用陣列中的元素取代多個同型別的變數,要用陣列時需要先宣告,並用new建立陣列物件,也可因此知道陣列的型別和有多少元素

設定陣列

int[] arr1;              // 先宣告
arr = new int[5];        // new物件

int[] arr2 = new int[5]; // 一次宣告加new物件

陣列設定初值

我們要在陣列中放資料,就要用陣列的索引值([]裡面放的數,new int[5]代表放了空間大小是5,從0開始)

int[] arr1 = new int[5];
arr[0] = 2;
arr[1] = 4;
arr[2] = 6;
arr[3] = 8;
arr[4] = 10;

int[] arr2 = new int[] {2, 4, 6, 8, 10}; // 建立陣列加設定初值

int[] arr3 = new int[5];
Arrays.fill(arr, 0);     // 如果初值都一樣可以用此方法,這裡是設定為0

讀取陣列內容

int[] arr = new int[] {2, 4, 6, 8, 10}; // 建立陣列加設定初值
// 單純使用for
for(int i=0; i<5; i++){
    System.out.println(arr[i]);
}
// 使用for each
for(int i: arr){
    System.out.println(i);
}

for each

使用形式:
for(陣列型別 變數名: 陣列名){}
注意: 只能從頭讀取每個元素,只能讀取不可改變元素,變數只在迴圈內有效

多維陣列

多維就像是空間座標一樣,一維就是x, 二維就是x、y, 三維就是x、y、z, ...

二維陣列建立

int[][] arr1;
arr1 = new int[3][4];

int[][] arr2 = new int[3][4];

二維陣列設定初值

int[][] arr1 = new int[3][4];
arr1[0][0] = 2;
...
arr1[2][3] = 7;

int[][] arr2 = {{2, 4, 6, 8}, {1, 2, 3, 4}, {1, 3, 5, 7}}; // 建立陣列加設定初值

巢狀迴圈讀取陣列

int[][] arr2 = {{2, 4, 6, 8}, {1, 2, 3, 4}, {1, 3, 5, 7}}; // 建立陣列加設定初值
for (int i=0; i< arr2.length; i++){
    for (int j=0; j<arr2[i].length; j++){
        System.out.print(arr2[i][j] + " ");
    }
    System.out.println();
}

Arrays類別基本操作

fill法 => 填滿相同初值

int[] arr3 = new int[5];
Arrays.fill(arr, 0);     // 如果初值都一樣可以用此方法,這裡是設定為0

sort方法 => 對資料進行排序

// 程式最前面要加上import java.util.Arrays;

int[] arr = new int[] {10, 6, 4, 8, 2}; // 建立陣列加設定初值
Arrays.sort(arr);
// 單純使用for
for(int i=0; i<5; i++){
    System.out.print(arr[i]+ " ");
}

binarySearch方法 => 對完成排序的資料進行搜尋

binarySearch(陣列, 要找的元素) => 回傳index

int[] arr2 = new int[] {2, 4, 6, 8, 10};

int num4 = Arrays.binarySearch(arr2, 4);
int num8 = Arrays.binarySearch(arr2, 8);

System.out.println("4 is at index " + num4);
System.out.println("8 is at index " + num8);

toString方法 => 轉換成String

int[] arr1 = {2, 4, 6, 8, 10};
System.out.println(Arrays.toString(arr1)); // [2, 4, 6, 8, 10]

copyOf、copyO方法 => 複製陣列

Arrays.copyOf(陣列, 選擇長度)
// copyOf => 從index0開始複製到選擇長度
int[] arr1 = {2, 4, 6, 8, 10};
int[] arr2 = Arrays.copyOf(arr1, 5);
System.out.println(Arrays.toString(arr2)); // [2, 4, 6, 8, 10]
int[] arr3 = Arrays.copyOf(arr1, 2);
System.out.println(Arrays.toString(arr3)); // [2, 4]
int[] arr4 = Arrays.copyOf(arr1, 6);
System.out.println(Arrays.toString(arr4)); // [2, 4, 6, 8, 10, null]

Arrays.copyOfRange(陣列, 開始index, 結束index+1)

int[] arr1 = {2, 4, 6, 8, 10};
int[] arr2 = Arrays.copyOfRange(arr1, 0, 2);
System.out.println(Arrays.toString(arr2)); // [2, 4]
int[] arr3 = Arrays.copyOfRange(arr1, 2, 5);
System.out.println(Arrays.toString(arr3)); // [6, 8, 10]
int[] arr4 = Arrays.copyOfRange(arr1, 4, 6);
System.out.println(Arrays.toString(arr4)); // [10, null]

上一篇
Day7: Java的因果輪迴--控制敘述
下一篇
Day9: 讓程式更簡單的「方法」
系列文
大學耍廢的我要學Java翻身30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言