Java 基礎( 陣列)
阿新 • • 發佈:2021-11-29
陣列
-
陣列(Array), 是多個相同型別資料按一定順序排列的集合,並使用一個名字命名,並通過編號的方式對這些資料進行統一管理。
-
陣列的常見概念
1.陣列名
2.下標(或索引)
3.元素
4.陣列的長度:元素的個數 -
陣列的特點
陣列是有序排列的
陣列本身是引用資料型別,而陣列中的元素可以是任何資料型別,包括基本資料型別和引用資料型別。
建立陣列物件會在記憶體中開闢一整塊連續的空間,而陣列名中引用的是這塊連續空間的首地址。
陣列的長度一旦確定,就不能修改。
可以直接通過下標(或索引)的方式呼叫指定位置的元素,速度很快。
-
陣列的分類
1.按照維數: 一維陣列,二為陣列
2.按照陣列元素的型別,基本資料型別元素的陣列,引用資料型別元素的陣列 -
陣列元素的預設初始化值
1.陣列元素是整型: 0
2.陣列元素是浮點型: 0.0
3.陣列元素是char型, 0或'\u0000',而非'0'
4.陣列元素是boolean型,false
5.陣列元素是引用資料型別: null
java 記憶體構成
多維陣列
- 如果說可以把一維陣列當成幾何中的線性圖形,那麼二維陣列就相當於是一個表格。
- 對於二維陣列的理解,我們可以看成是一堆陣列 array1 又作為另一個一維陣列 array2 的元素而存在,其實,從陣列底層的執行機制來看,其實沒有多維陣列。
public class ArrayTest2 { public static void main(String[] args) {//1. 二維陣列的宣告和初始化 // 靜態初始化1 int [][] arr1 = new int[][] {{1,2,3},{4,5},{6,7,8}}; // 靜態初始化2 int[] arr4[] = new int[][] {{1,2,3},{4,5},{6,7,8}}; // 靜態初始化3 int[] arr5[] = {{1,2,3},{4,5},{6,7,8}}; // 動態初始化1 String[][] arr2 = newString[3][2]; // 動態初始化2 String[][] arr3 = new String[3][]; //2.如何呼叫陣列的指定位置的元素 System.out.println(arr1[0][1]); //2 System.out.println(arr2[1][1]); //null //System.out.println(arr3[1][0]); //報錯 arr3[1] = new String[4]; System.out.println(arr3[1][0]); //null //3.獲取陣列的長度 System.out.println(arr4.length); //3 System.out.println(arr4[0].length);//3 //4.遍歷二維陣列 for(int i = 0; i < arr4.length; i++) { for(int j = 0; j < arr4[i].length; j++) { System.out.print(arr4[i][j] + " "); } System.out.println(); } } }
二維陣列
- 二維陣列分為外層陣列的元素,內層陣列的元素
例如: int [][] arr = new int[4][3];
外層元素: arr[0], arr[1]等
內層元素:arr[0][0], arr[1][2] - 陣列元素的預設初始化值
針對初始化方式一:比如 int[][] arr = new int[4][3];
外層元素的初始化值為:地址值
內層元素的初始化值為:與一維陣列初始化情況相同
針對初始化方式二:比如 int[][] arr = new int[4][];
外層元素的初始化值為:null
內層元素的初始化值為:不能呼叫,否則報錯
二維陣列記憶體解析
public class ArrayTest3 { public static void main(String[] args) { int [][] arr = new int[4][3]; System.out.println(arr[0]); //[I@182decdb <- 一元陣列地址值 System.out.println(arr[0][0]); //0 System.out.println(arr); //[[I@7637f22 <- 二元陣列地址值 System.out.println("********************************"); float[][] arr1 = new float[4][5]; System.out.println(arr1[0]); //[F@4926097b System.out.println(arr1[0][0]); //0.0 System.out.println("********************************"); String[][] arr2 = new String[4][2]; System.out.println(arr2[1]); //[Ljava.lang.String;@2d363fb3 System.out.println(arr2[1][1]); //null } }