首頁 > 軟體

Java零基礎入門陣列

2022-04-14 22:00:28

認識陣列

陣列的定義

陣列是相同型別資料的有序集合。陣列描述的是相同型別的若干個資料,按照一定的先後次序排列組合而成。其中,每一個資料稱作一個元素,每個元素可以通過一個索引(下標)來存取它們。

陣列的四個基本特點

  • 長度是確定的。陣列一旦被建立,它的大小就是不可以改變的。
  • 其元素的型別必須是相同型別,不允許出現混合型別。
  • 陣列型別可以是任何資料型別,包括基本型別和參照型別。
  • 陣列有索引的:索引從0開始,到 陣列.length-1結束
  • 陣列變數屬於參照型別,陣列也是物件。

PS:陣列變數屬於參照型別,陣列也是物件,陣列中的每個元素相當於該物件的成員變數。陣列本身就是物件,Java中物件是在堆中的,因此陣列無論儲存原始型別還是其他物件型別,陣列物件本身是在堆中儲存的。

陣列下標從0開始

arr[0] == 12

arr[1] == 6

arr[2] == 27

arr[5] == 43

陣列的初始化

陣列的初始化方式總共有三種:預設初始化、靜態初始化、動態初始化。

預設初始化

陣列是參照型別,它的元素相當於類的範例變數,因此陣列一經分配空間,其中的每個元素也被按照範例變數同樣的方式被隱式初始化。

int[] arr = new int[3];  //陣列有預設的初始化值

基本資料型別陣列的預設值:

byte[] : 0

short[] : 0

cahr[] : ‘u0000’

int[] : 0

long[] : 0

float[] : 0.0

double[] : 0.0

boolean[] : false

參照資料型別陣列的預設值:null

靜態初始化

除了用new關鍵字來產生陣列以外,還可以直接在定義陣列的同時就為陣列元素分配空間並賦值。

int[] arr = {12,23,45};
int[] arr = new int[]{12,23,45};

動態初始化

陣列定義與為陣列元素分配空間並賦值的操作分開進行。

int[] arr ;
arr = new int[3]
arr[0] = 12;
arr[1] = 23;
arr[2] = 45;

陣列有關的問題

陣列的遍歷

兩種方法

public class TestCode04 {
    public static void main(String[] args) {
        int[] arr1 = new int[]{1, 2, 3, 4, 5};
        int[] arr2 = {5, 4, 3, 2, 1};
        //方式1,使用普通for迴圈
        //arr1.length獲取陣列長度的方法
        for (int i = 0; i < arr1.length; i++) {
            System.out.print(arr1[i] + " ");
        }
        System.out.println();
        //方式2,使用增強for迴圈
        for (int a : arr2) {
            System.out.print(a + " ");
        }
    }
}

求最值問題

問題:給定一個陣列int[] arr = {3,5,6,17,26,9,0,7}; ,求出陣列中最大的數

public class TestCode05 {
    public static void main(String[] args) {
        int[] arr={3,5,6,17,26,9,0,7};
        int max=arr[0];//假設最大元素為陣列arr[0]位置上的數
        //然後依次向後比較
        for(int i=1;i<arr.length;i++){
            //因為max=arr[0];可以從arr[1]位置開始比較
            if(arr[i]>max){
                max=arr[i];
            }
        }
        System.out.println(max);
    }
}

查詢子元素

查詢指定位置元素

給定一個陣列,查詢索引位置為2上的元素

public class TestCode06 {
    public static void main(String[] args) {
        int[] arr={3,5,6,17,26,9,0,7};
        //直接輸出arr[2];
        System.out.println(arr[2]);
        //輸出-->6
    }
}

上面程式碼體現了陣列的一個優點:在按照位置查詢的時候,直接一步到位,效率非常高

查詢指定元素的位置–>找出元素對應的索引

public class TestCode07{
    public static void main(String[] args){
                //查詢指定元素的位置-->找出元素對應的索引 
                //給定一個陣列:
                int[] arr = {12,34,56,7,3,56};
                //           0  1  2  3 4  5              
                //功能:查詢元素12對應的索引:
                int index = -1; //這個初始值只要不是陣列的索引即可
                for(int i=0;i<arr.length;i++){
                        if(arr[i]==12){
                                index = i;//只要找到了元素,那麼index就變成為i
                                break;//只要找到這個元素,迴圈就停止
                        }
                }
                if(index!=-1){
                        System.out.println("元素對應的索引:"+index);
                }else{//index==-1
                        System.out.println("查無此數!");
                }
        }
}

Arrays工具類

為了方便我們對陣列進行操作,系統提供一個類Arrays,我們將它當做工具類來使用。

下面通過程式碼演示Arrays類中常用的方法:

Arrays.toString(arr);//對陣列進行遍歷檢視,返回的是一個字串

Arrays.sort(arr);//對陣列進行排序 -->升序

Arrays.copyOf(arr,index);//對陣列的複製

Arrays.copyOfRange(arr,startindex,endindex);//區間複製

Arrays.equals(arr1,arr2);//比較兩個陣列的值是否一樣

Arrays.fill(arr,1);//陣列填充

import java.util.Arrays;
public class TestCode08{
        public static void main(String[] args){
                //給定一個陣列:
                int[] arr = {1,3,7,2,4,8};
                //toString:對陣列進行遍歷檢視的,返回的是一個字串
                System.out.println(Arrays.toString(arr));
                
                //binarySearch:二分法查詢:找出指定陣列中的指定元素對應的索引:
                //這個方法的使用前提:一定要檢視的是一個有序的陣列:
                //sort:排序 -->升序
                Arrays.sort(arr);
                System.out.println(Arrays.toString(arr));
                System.out.println(Arrays.binarySearch(arr,4));
                
                int[] arr2 = {1,3,7,2,4,8};
                //copyOf:完成陣列的複製:
                int[] newArr = Arrays.copyOf(arr2,4);
                System.out.println(Arrays.toString(newArr));
                
                //copyOfRange:區間複製:
                int[] newArr2 = Arrays.copyOfRange(arr2,1,4);//[1,4)-->1,2,3位置
                System.out.println(Arrays.toString(newArr2));
                
                //equals:比較兩個陣列的值是否一樣:
                int[] arr3 = {1,3,7,2,4,8};
                int[] arr4 = {1,3,7,2,4,8};
                System.out.println(Arrays.equals(arr3,arr4));//true
                System.out.println(arr3==arr4);//false ==比較左右兩側的值是否相等,比較的是左右的地址值,返回結果一定是false                
                //fill:陣列的填充:
                int[] arr5 = {1,3,7,2,4,8};
                Arrays.fill(arr5,10);
                System.out.println(Arrays.toString(arr5));
        }
}

二維陣列

本質上全部都是一維陣列

二維陣列初始方式

  • 靜態初始化
int[][] arr = {{1,2},{4,5,6},{4,5,6,7,8,9,9}};
int[][] arr =new int[][] {{1,2},{4,5,6},{4,5,6,7,8,9,9}};
  • 動態初始化
int[][] arr = new int[3][]; //本質上定義了一維陣列長度為3,每個「格子」中放入的是一個陣列
arr[0] = new int[]{1,2};
arr[1] = new int[]{3,4,5,6};
arr[2] = new int[]{34,45,56};
  • 預設初始化

陣列是參照型別,它的元素相當於類的範例變數,因此陣列一經分配空間,其中的每個元素也被按照範例變數同樣的方式被隱式初始化。

int[][] arr=new int[3][3];//定義一個3*3的二維陣列,預設值為0

二維陣列的遍歷

兩個for迴圈

        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; i < arr[i].length; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();//換行
        }
    }

到此這篇關於Java零基礎入門陣列的文章就介紹到這了,更多相關Java 陣列內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com