1. 程式人生 > 其它 >Java 基礎( 陣列)

Java 基礎( 陣列)

陣列

  • 陣列(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 = new
String[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
    }

}