數組的定義
- 數組是相同類型數據的有序集合
- 數組描述的是相同類型的若干個數據,按照一定的先后次序排列組合而成
- 其中,每一個數據稱作一個數組元素,每個數組元素可以通過一個下標來訪問,下標從0開始
數組的創建
首先必須聲明數組變量,才能在程序中使用數組
數值有三種初始化,分別為靜態初始化、動態初始化和默認初始化。因為數組是引用類型,因此和類一樣,數組的元素相當於類的實例變量,在數組創建被分配空間以后,會被隱式的初始化
public class Hello {
public static void main(String[] args) {
int[] nums; //數組的聲明,數組類型int[]
nums = new int[10]; //數組的創建,new對象
int[] nums2 = new int[10]; //兩步可以合成一步
//動態初始化
nums2[0] = 1; //根據下標給數組賦值
//靜態初始化
int[] num3 = {1, 2, 3, 4}; //也可以直接給數組賦值
//默認初始化,值為0
int[] num4 = new int[10];
int sum = 0;
for (int i = 0; i < num3.length; i++){ //.length方法獲取數組的長度
sum += num3[i]; //數組下標從0開始,因此最大是num3.length - 1,超出會發生數組越界錯誤
}
System.out.println(sum);
System.out.println(num4[0]);
}
}
內存分析
- 棧:存放基本變量類型(包含數值)、引用對象的變量(只是該引用在堆里面的具體地址)
- 堆:存放new的對象和數組,可以被所有線程共享,不會存放別的對象引用

- 聲明數組時,只是在棧中存放了一個數組名,只有在創建數組時,才會在堆中分配new對象的空間,此時棧中的數組名成為對象的引用
數組的基本特點
- 數組的長度是確定的,一旦被創建,其大小不可再更改
- 數組的元素必須是相同類型,不允許出現混合類型
- 數組中的元素可以是任何數據類型,包括基本類型和引用類型
- 數組變量屬於引用類型,數組本身就是對象,數組元素相當於對象的成員變量。無論其保存的是原始類型還是其他對象類型,數組對象本身是在堆中的
數組的使用
增強for循環(不常用)
public class Hello {
public static void main(String[] args) {
int[] num = {1, 2, 3, 4, 5}; //定義一個數組
for (int i : num){ //從數組里依次取出值,類似Python語言的for...in結構
System.out.println(i);
}
}
}
數組作為方法傳參
public class Hello {
public static void main(String[] args) {
int[] arrays = {1, 2, 3, 4, 5};
PrintArray(arrays); //數組作為方法的參數
}
//打印數組元素
public static void PrintArray(int[] arrays){
for (int i = 0; i < arrays.length; i++){
System.out.print(arrays[i] + "\t");
}
}
}
數組作為返回值
public class Hello {
public static void main(String[] args) {
int[] arrays = {1, 2, 3, 4, 5};
PrintArray(reverse(arrays));
}
//將數組元素反轉
public static int[] reverse(int[] arrays){ //注意返回值類型為int[]
int[] newArrays = new int[arrays.length];
for (int i = 0; i < arrays.length; i++){
newArrays[arrays.length - 1 - i] = arrays[i];
}
return newArrays; //數組作為返回值
}
//打印數組的元素
public static void PrintArray(int[] arrays){
for (int i = 0; i < arrays.length; i++){
System.out.print(arrays[i] + "\t");
}
}
}
多維數組
多維數組可以看成是數組的數組,比如二維數組就是一個特殊的一維數組,其每一個元素都是一個一維數組
public class Hello {
public static void main(String[] args) {
int[][] arrays = {{1, 2}, {3, 4}, {5, 6}}; //二維數組的定義
for (int i = 0; i < arrays.length; i++) {
for (int j = 0; j < arrays[i].length; j++) {
System.out.println(arrays[i][j]);
}
}
}
}
