數組是具備相同數據類型的一組數據的集合,根據維數不一樣能夠分爲一維數組、二維數組和多維數組。Java 語言中提供的數組是用來存儲固定大小的同類型元素。java
在使用數組以前,必須首先定義數組變量所屬的類型,即聲明數組。算法
數組元素類型 數組名[]; 或 數據元素類型[] 數組名;
須要注意的聲明時是[]中不能添加任何數據。兩種聲明方式都正確,不一樣數據要聲明不一樣類型的數組;具體以下:數組
int arr[]; // 聲明int型數組,數組中每一個元素都是int型數值 或 String[] str; // 聲明String數組,數組中每一個元素都是String數組
數組名 = new 數組元素類型[數組元素個數];
實例以下:ide
arr = new int[5]; //爲數組分配一個大小爲5的內存空間
數組元素類型 數組名 = new 數組元素類型[數組元素個數];
例如:建立了一個一維數組arr,並指定了數組長度爲9。對象
int arr = new int[9];
數組也能夠與基本數據類型同樣進行初始化操做,能夠分別初始化數組中的每一個元素。排序
數組初始化的方式有兩種,具體以下:索引
int arr1[] = new int[]{1,2,3,4,5}; // 第一種 或 int arr2[] = {10,11,12,13,14}; // 第二種
數組初始化的方式是:把數據包括在大括號以內,中間用逗號分開數組中的元素的值,系統自動爲數組分配必定的空間。內存
練習1:求一組一維數組的和it
public class Demo01 { public static void main(String[] args) { int arr[] = {1, 2, 3, 4, 5}; // 建立並初始化數組 int sum = 0; // 存儲累加和 for (int i = 0; i < arr.length; i++) { //arr.length表示數組的長度 sum += arr[i]; } System.out.println("sum的和爲" + sum); } }
運行結果:for循環
sum的和爲15
練習2:遍歷數組
public class Demo02 { public static void main(String[] args) { int arr[] = {1, 2, 3, 4, 5}; // 建立並初始化數組 int sum = 0; // 存儲累加和 //普通的for循環 for (int i = 0; i < arr.length; i++) { //arr.length表示數組的長度 System.out.print(arr[i] + " "); } System.out.println(); //加強型的for循環 for (int array : arr){ System.out.print(array + " "); } } }
運行結果:
1 2 3 4 5 1 2 3 4 5
若是一維數組中的各個元素還是一維數組,那麼它就是一個二維數組。二維數組經常使用於表示表,表中的信息以行和列的形式組織,第一個下標表明元素所在的行,第二個下標代碼元素所在的列。或用線性代數的知識來講,二維數組就是一個矩陣,第一個下標表明矩陣的行,第二個下標表明矩陣的列。
二維數組的聲明也有兩種方式,語法格式以下:
數組元素類型 數組名[][]; 數組元素類型[][] 數組名;
與一維數組同樣,若是聲明時沒有分配內存空間,一樣也要使用關鍵字new來分配內存。
二維數組能夠看做由多個一維數組組成,在給二維數組分配內存時,能夠爲這些一維數組同時分配相同的內存。第一個中括號中的數組是一維數組的個數,第二個中括號中是一維數組的長度。
int arr = new int[2][4]; //聲明一個二維數組arr併爲其分配內存空間,分配後arr擁有兩個長度爲4的一維數組
二維數組初始化
二維數組的初始化與一維數組相似,一樣可使用大括號完成二維數組的初始化。以下:
int arr[][] = {{3,0},{5,7},{6,9}};
練習:遍歷二維數組
public class Demo03 { public static void main(String[] args) { int arr[][] = {{1,2},{3,4,5},{6,7,8,9}}; for(int i=0; i<arr.length; i++) { for(int j=0; j<arr[i].length; j++) { System.out.print(arr[i][j] + " "); // 輸出 } System.out.println(); // 換行 } } }
運行結果:
1 2 3 4 5 6 7 8 9
對於三維數組,想必各位已經能推算出來了,一維用一個括號,二維用兩個括號,那麼三維就用三個括號。
int arr[][][] = new int[][][]{ {{1,2,3},{4,5,6}}, {{7,8,9},{10,11,12}}, {{13,14,15},{16,17,18}} };
java.util.Arrays 類能方便地操做數組,它提供的全部方法都是靜態的。
具備如下功能:
具體說明請查看下錶:
序號 | 方法和說明 |
---|---|
1 | public static int binarySearch(Object[] a, Object key) 用二分查找算法在給定數組中搜索給定值的對象(Byte,Int,double等)。數組在調用前必須排序好的。若是查找值包含在數組中,則返回搜索鍵的索引;不然返回 (-(插入點) - 1)。 |
2 | public static boolean equals(long[] a, long[] a2) 若是兩個指定的 long 型數組彼此相等,則返回 true。若是兩個數組包含相同數量的元素,而且兩個數組中的全部相應元素對都是相等的,則認爲這兩個數組是相等的。換句話說,若是兩個數組以相同順序包含相同的元素,則兩個數組是相等的。一樣的方法適用於全部的其餘基本數據類型(Byte,short,Int等)。 |
3 | public static void fill(int[] a, int val) 將指定的 int 值分配給指定 int 型數組指定範圍中的每一個元素。一樣的方法適用於全部的其餘基本數據類型(Byte,short,Int等)。 |
4 | public static void sort(Object[] a) 對指定對象數組根據其元素的天然順序進行升序排列。一樣的方法適用於全部的其餘基本數據類型(Byte,short,Int等)。 |
代碼以下:
import java.util.Arrays; /** * 冒泡排序 */ public class Demo04 { public static void main(String[] args) { int[] array = {1,4,6,2,8,5,0}; //臨時變量 int tmp; //外層循環:判斷須要循環多少次 for (int i = 0; i < array.length-1; i++) { //內層循環:比較兩個數 for (int j = 0; j < array.length-1-i; j++) { if (array[j+1] > array[j]){ tmp = array[j]; array[j] = array[j+1]; array[j+1] = tmp; } } } System.out.println(Arrays.toString(array)); } }
運行結果:
[8, 6, 5, 4, 2, 1, 0]