陣列
什么是陣列?
陣列的定義:
-
陣列是相同型別資料的有序集合.
-
陣列描述的是相同型別的若干個資料,按照一定的先后次序排列組合而成,
-
其中,每一個資料稱作一個陣列元素,每個陣列元素可以通過一個下標來訪問它們.
陣列的四個基本特點:
- 其長度是確定的,陣列一旦被創建,它的大小就是不可以改變的,
- 其元素必須是相同型別,不允許出現混合型別,
- 陣列中的元素可以是任何資料型別,包括基本型別和參考型別,
- 陣列變數屬參考型別,陣列也可以看成是物件,陣列中的每個元素相當于該物件的成員變數,陣列本身就是物件,Java中物件是在堆中的,因此陣列無論保存原始型別還是其他物件型別,陣列物件本身是在堆中的,
陣列宣告與創建
首先必須宣告陣列變數,才能在程式中使用陣列,
double[] myList; // 首選的方法
或
double myList[]; // 效果相同,但不是首選方法
創建陣列
Java語言使用new運算子來創建陣列,語法如下:
arrayRefVar = new dataType[arraySize];
上面的語法陳述句做了兩件事:
一、使用 dataType[arraySize] 創建了一個陣列,
二、把新創建的陣列的參考賦值給變數 arrayRefVar,
陣列的元素是通過索引訪問的,陣列索引從 0 開始,所以索引值從 0 到 arrayRefVar.length-1,
例如:
public static void main(String[] args) {
//1.宣告一個陣列
int[] myList = null;
//2.創建一個陣列
myList = new int[10];
//3.像陣列中存值
myList[0] = 1;
myList[1] = 2;
myList[2] = 3;
myList[3] = 4;
myList[4] = 5;
myList[5] = 6;
myList[6] = 7;
myList[7] = 8;
myList[8] = 9;
myList[9] = 10;
// 計算所有元素的總和
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("總和為: " + total);
}
注意:
-
宣告一個陣列的時候陣列并沒有被真正的創建,
-
構造一個陣列,必須指定長度,
-
ArrayIndexOutOfBoundsException : 陣列下標越界例外!
for-each 回圈
JDK 1.5 引進了一種新的回圈型別,被稱為 For-Each 回圈或者加強型回圈,它能在不使用下標的情況下遍歷陣列,
語法格式如下:
for(type element: array){
System.out.println(element);
}
例如:
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 列印所有陣列元素
for (double element: myList) {
System.out.println(element);
}
}
多維陣列
多維陣列可以看成是陣列的陣列,比如二維陣列就是一個特殊的一維陣列,其每一個元素都是一個一維陣列,
多維陣列的動態初始化(以二維陣列為例)
直接為每一維分配空間,格式如下:
type[][] typeName = new type[typeLength1][typeLength2];
type 可以為基本資料型別和復合資料型別,arraylenght1 和 arraylenght2 必須為正整數,arraylenght1 為行數,arraylenght2 為列數,
比如定義一個二維陣列:
int a[][] = new int[2][5];
上面這個陣列可以看成是一個兩行五列的陣列,
Arrays類
Arrays類中的方法都是static修飾的靜態方法,在使用的時候可以直接使用類名進行呼叫,而"不用"使用物件來呼叫(注意:是"不用" 而不是 "不能")
java.util.Arrays 類能方便地操作陣列. 使用之前需要導包!
具有以下常用功能:
-
給陣列賦值:通過 fill 方法,
-
對陣列排序:通過 sort 方法,按升序,
-
比較陣列:通過 equals 方法比較陣列中元素值是否相等,
-
查找陣列元素:通過 binarySearch 方法能對排序好的陣列進行二分查找法操作,
列印陣列:
public static void main(String[] args) {
int[] a = {1,2};
System.out.println(a); //[I@1b6d3586 ]
System.out.println(Arrays.toString(a)); //[1, 2]
}
陣列排序:
public static void main(String[] args) {
int[] a = {1,2,323,23,543,12,59};
System.out.println(Arrays.toString(a));
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}
二分法查找:
public static void main(String[] args) {
int[] a = {1,2,323,23,543,12,59};
Arrays.sort(a); //使用二分法查找,必須先對陣列進行排序
System.out.println("該元素的索引:"+Arrays.binarySearch(a, 12));
}
元素填充:
public static void main(String[] args) {
int[] a = {1,2,323,23,543,12,59}; Arrays.sort(a); //使用二分法查找,必須先對陣列進行排序
Arrays.fill(a, 2, 4, 100); //將2到4索引的元素替換為100
System.out.println(Arrays.toString(a));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/541988.html
標籤:Java
下一篇:第二章 執行緒管控
