1. 程式人生 > 實用技巧 >Java陣列相關知識點

Java陣列相關知識點

陣列

1.陣列初始化概述

Java中的陣列必須先初始化才能使用

初始化:就是為陣列中的陣列元素分配記憶體空間,併為每個陣列元素賦值

2.陣列初始化方式

2.1動態初始化

動態初始化:初始化時只指定陣列長度,由系統為陣列分配初始值

格式:資料型別[] 變數名 = new 資料型別[陣列長度];

範例:int[] arr = new int[3];

package com.itheima_01;

public class ArrayDemo {
    public static void main(String[] args) {

        int[] arr = new int[3];
        /*
        * 左邊:
        *       int:說明陣列中的元素型別是int型別
        *       []:說明這是一個數組
        *       arr:陣列名稱
        * 右邊:
        *       new:為陣列申請記憶體空間
        *       int:說明陣列中的元素型別是int型別
        *       []:說明這是一個數組
        *       3:陣列長度,即陣列中的元素個數
        * 
        * */
    }
}

2.2靜態初始化

靜態初始化:初始化時指定每個陣列元素的初始值,由系統決定陣列長度

  • 格式:資料型別[] 變數名 = new 資料型別[]{資料1,資料2,資料3......}
  • 範例:int[] arr = new int[]{1,2,3};

推薦

  • 簡化格式:資料型別[] 變數名 = {資料1,資料2,資料3.....}
  • 範例:int [] arr = {1,2,3};

3.陣列元素訪問

3.1陣列元素訪問

  • 陣列變數的訪問方式:

  • 格式:陣列名

  • 陣列中內部儲存的資料成員的訪問方式:

  • 格式:陣列名[陣列下標索引]

  • 索引是陣列中資料的標號方式

  • 索引作用:索引用於訪問陣列中的資料使用,陣列名[索引]等同於變數名,是一種特殊的變數名

  • 特徵:

  1. 索引從0開始
  2. 索引是連續的
  3. 索引是逐一增加的,每次加一
//輸出陣列名
System.out.println(arr);//[I@1540e19d
//輸出陣列元素
System.out.println(arr[0]);//0
System.out.println(arr[1]);//0
System.out.println(arr[2]);//0

4.記憶體分配

4.1Java中的記憶體分配

Java程式在執行時,需要在記憶體中分配空間,為了提高運算效率,就對空間進行了不同區域的劃分,因為每一片區域都有特定的資料處理方式和記憶體管理方式。

5.陣列操作中的兩個常見小問題

5.1 陣列索引越界

訪問了資料中不存在的索引對應的元素,造成索引越界問題

int[] arr = new int[3];
System.out.println(arr[3]);

5.2空指標異常

訪問的陣列已經不在指向堆記憶體的資料,如果強行訪問就會造成空指標異常

int[] arr = new int[3];
System.out.println(arr[2]);
//把null賦值給arr陣列
//null:空值,引用資料型別的預設值,表示不指向任何有效物件
arr = null;
//輸出元素
System.out.println(arr[2]);

6.陣列常見操作

6.1遍歷

int[] arr = {11,22,33,44,55,66,77,88,99};
for (int x = 0; x < arr.length; x++){
    System.out.println(arr[x]);
}

6.2獲取最值

//定義陣列
int[] arr = {12,45,98,71,60};

//定義一個變數,用於儲存最大值
//取陣列中的第一個資料作為變數的初始值
int max = arr[0];
//與陣列中的剩餘元素逐個比對,每次比對將最大值儲存到變數中
for(int x = 1; x <arr.length;x++){
    if(arr[x] > max){
        max = arr[x];
    }
}
//迴圈結束後列印最大值
System.out.println("max:" + max);