亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java從入門(mén)到起飛之?dāng)?shù)組使用詳解

 更新時(shí)間:2025年03月18日 09:07:18   作者:I'm?Joe  
這篇文章主要介紹了Java從入門(mén)到起飛之?dāng)?shù)組使用的相關(guān)資料,包括數(shù)組的聲明、初始化、長(zhǎng)度、索引、遍歷和默認(rèn)值等內(nèi)容,還介紹了Arrays工具類中常用的方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. 數(shù)組的概述

1.1 為什么需要數(shù)組

需求分析1:

需要統(tǒng)計(jì)某公司50個(gè)員工的工資情況,例如計(jì)算平均工資、找到最高工資等。用之前知識(shí),首先需要聲明50個(gè)變量來(lái)分別記錄每位員工的工資,這樣會(huì)很麻煩。因此我們可以將所有的數(shù)據(jù)全部存儲(chǔ)到一個(gè)容器中統(tǒng)一管理,并使用容器進(jìn)行計(jì)算。

容器的概念:

  • 生活中的容器:水杯(裝水等液體),衣柜(裝衣服等物品),集裝箱(裝貨物等)。
  • 程序中的容器:將多個(gè)數(shù)據(jù)存儲(chǔ)到一起,每個(gè)數(shù)據(jù)稱為該容器的元素。

1.2 數(shù)組的概念

  • 數(shù)組(Array),是多個(gè)相同類型數(shù)據(jù)按一定順序排列的集合,并使用一個(gè)名字命名,并通過(guò)編號(hào)的方式對(duì)這些數(shù)據(jù)進(jìn)行統(tǒng)一管理。

  • 數(shù)組中的概念

    • 數(shù)組名
    • 下標(biāo)(或索引)
    • 元素
    • 數(shù)組的長(zhǎng)度

數(shù)組的特點(diǎn):

  • 數(shù)組本身是引用數(shù)據(jù)類型,而數(shù)組中的元素可以是任何數(shù)據(jù)類型,包括基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。
  • 創(chuàng)建數(shù)組對(duì)象會(huì)在內(nèi)存中開(kāi)辟一整塊連續(xù)的空間。占據(jù)的空間的大小,取決于數(shù)組的長(zhǎng)度和數(shù)組中元素的類型。
  • 數(shù)組中的元素在內(nèi)存中是依次緊密排列的,有序的。
  • 數(shù)組,一旦初始化完成,其長(zhǎng)度就是確定的。數(shù)組的長(zhǎng)度一旦確定,就不能修改。
  • 我們可以直接通過(guò)下標(biāo)(或索引)的方式調(diào)用指定位置的元素,速度很快。
  • 數(shù)組名中引用的是這塊連續(xù)空間的首地址。

1.3 數(shù)組的分類

1、按照元素類型分:

  • 基本數(shù)據(jù)類型元素的數(shù)組:每個(gè)元素位置存儲(chǔ)基本數(shù)據(jù)類型的值
  • 引用數(shù)據(jù)類型元素的數(shù)組:每個(gè)元素位置存儲(chǔ)對(duì)象(本質(zhì)是存儲(chǔ)對(duì)象的首地址)(在面向?qū)ο蟛糠种v解)

2、按照維度分:

  • 一維數(shù)組:存儲(chǔ)一組數(shù)據(jù)
  • 二維數(shù)組:存儲(chǔ)多組數(shù)據(jù),相當(dāng)于二維表,一行代表一組數(shù)據(jù),只是這里的二維表每一行長(zhǎng)度不要求一樣。

2. 一維數(shù)組的使用

2.1 一維數(shù)組的聲明

格式:

//推薦
元素的數(shù)據(jù)類型[] 一維數(shù)組的名稱;

//不推薦
元素的數(shù)據(jù)類型  一維數(shù)組名[];

舉例:

int[] arr;
int arr1[];
double[] arr2;
String[] arr3;  //引用類型變量數(shù)組

數(shù)組的聲明,需要明確:

(1)數(shù)組的維度:在Java中數(shù)組的符號(hào)是[],[]表示一維,[][]表示二維。

(2)數(shù)組的元素類型:即創(chuàng)建的數(shù)組容器可以存儲(chǔ)什么數(shù)據(jù)類型的數(shù)據(jù)。元素的類型可以是任意的Java的數(shù)據(jù)類型。例如:int、String、Student等。

(3)數(shù)組名:就是代表某個(gè)數(shù)組的標(biāo)識(shí)符,數(shù)組名其實(shí)也是變量名,按照變量的命名規(guī)范來(lái)命名。數(shù)組名是個(gè)引用數(shù)據(jù)類型的變量,因?yàn)樗硪唤M數(shù)據(jù)。

舉例:

public class ArrayTest1 {
    public static void main(String[] args) {
        //比如,要存儲(chǔ)一個(gè)小組的成績(jī)
        int[] scores;
        int grades[];
//        System.out.println(scores);//未初始化不能使用

        //比如,要存儲(chǔ)一組字母
        char[] letters;

        //比如,要存儲(chǔ)一組姓名
        String[] names;

        //比如,要存儲(chǔ)一組價(jià)格
        double[] prices;

    }
}

注意:Java語(yǔ)言中聲明數(shù)組時(shí)不能指定其長(zhǎng)度(數(shù)組中元素的個(gè)數(shù))。 例如: int a[5]; //非法

2.2 一維數(shù)組的初始化

2.2.1 靜態(tài)初始化

  • 如果數(shù)組變量的初始化和數(shù)組元素的賦值操作同時(shí)進(jìn)行,那就稱為靜態(tài)初始化。

  • 靜態(tài)初始化,本質(zhì)是用靜態(tài)數(shù)據(jù)(編譯時(shí)已知)為數(shù)組初始化。此時(shí)數(shù)組的長(zhǎng)度由靜態(tài)數(shù)據(jù)的個(gè)數(shù)決定。

  • 一維數(shù)組聲明和靜態(tài)初始化格式1:

    數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{元素1,元素2,元素3,...};
    
    或
        
    數(shù)據(jù)類型[] 數(shù)組名;
    數(shù)組名 = new 數(shù)據(jù)類型[]{元素1,元素2,元素3,...};
    
    • new:關(guān)鍵字,創(chuàng)建數(shù)組使用的關(guān)鍵字。因?yàn)閿?shù)組本身是引用數(shù)據(jù)類型,所以要用new創(chuàng)建數(shù)組實(shí)體。

例如,定義存儲(chǔ)1,2,3,4,5整數(shù)的數(shù)組容器。

int[] arr = new int[]{1,2,3,4,5};//正確
//或
int[] arr;
arr = new int[]{1,2,3,4,5};//正確
  • 一維數(shù)組聲明和靜態(tài)初始化格式2:
數(shù)據(jù)類型[] 數(shù)組名 = {元素1,元素2,元素3...};//必須在一個(gè)語(yǔ)句中完成,不能分成兩個(gè)語(yǔ)句寫(xiě)

例如,定義存儲(chǔ)1,2,3,4,5整數(shù)的數(shù)組容器

int[] arr = {1,2,3,4,5};//正確

int[] arr;
arr = {1,2,3,4,5};//錯(cuò)誤

舉例:

public class ArrayTest2 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};//右邊不需要寫(xiě)new int[]

        int[] nums;
        nums = new int[]{10,20,30,40}; //聲明和初始化在兩個(gè)語(yǔ)句完成,就不能使用new int[]

        char[] word = {'h','e','l','l','o'};

        String[] heros = {"袁隆平","鄧稼先","錢(qián)學(xué)森"};

        System.out.println("arr數(shù)組:" + arr);//arr數(shù)組:[I@1b6d3586
        System.out.println("nums數(shù)組:" + nums);//nums數(shù)組:[I@4554617c
        System.out.println("word數(shù)組:" + word);//word數(shù)組:[C@74a14482
        System.out.println("heros數(shù)組:" + heros);//heros數(shù)組:[Ljava.lang.String;@1540e19d
    }
}

2.2.2 動(dòng)態(tài)初始化

數(shù)組變量的初始化和數(shù)組元素的賦值操作分開(kāi)進(jìn)行,即為動(dòng)態(tài)初始化。

動(dòng)態(tài)初始化中,只確定了元素的個(gè)數(shù)(即數(shù)組的長(zhǎng)度),而元素值此時(shí)只是默認(rèn)值,還并未真正賦自己期望的值。真正期望的數(shù)據(jù)需要后續(xù)單獨(dú)一個(gè)一個(gè)賦值。

格式:

數(shù)組存儲(chǔ)的元素的數(shù)據(jù)類型[] 數(shù)組名字 = new 數(shù)組存儲(chǔ)的元素的數(shù)據(jù)類型[長(zhǎng)度];

或

數(shù)組存儲(chǔ)的數(shù)據(jù)類型[] 數(shù)組名字;
數(shù)組名字 = new 數(shù)組存儲(chǔ)的數(shù)據(jù)類型[長(zhǎng)度];
  • [長(zhǎng)度]:數(shù)組的長(zhǎng)度,表示數(shù)組容器中可以最多存儲(chǔ)多少個(gè)元素。

  • **注意:數(shù)組有定長(zhǎng)特性,長(zhǎng)度一旦指定,不可更改。**和水杯道理相同,買(mǎi)了一個(gè)2升的水杯,總?cè)萘烤褪?升是固定的。

舉例1:正確寫(xiě)法

int[] arr = new int[5];

int[] arr;
arr = new int[5];

舉例2:錯(cuò)誤寫(xiě)法

int[] arr = new int[5]{1,2,3,4,5};//錯(cuò)誤的,后面有{}指定元素列表,就不需要在[]中指定元素個(gè)數(shù)了。

2.3 一維數(shù)組的使用

2.3.1 數(shù)組的長(zhǎng)度

  • 數(shù)組的元素總個(gè)數(shù),即數(shù)組的長(zhǎng)度
  • 每個(gè)數(shù)組都有一個(gè)屬性length指明它的長(zhǎng)度,例如:arr.length 指明數(shù)組arr的長(zhǎng)度(即元素個(gè)數(shù))
  • 每個(gè)數(shù)組都具有長(zhǎng)度,而且一旦初始化,其長(zhǎng)度就是確定,且是不可變的。

2.3.2 數(shù)組元素的引用

如何表示數(shù)組中的一個(gè)元素?

每一個(gè)存儲(chǔ)到數(shù)組的元素,都會(huì)自動(dòng)的擁有一個(gè)編號(hào),從0開(kāi)始,這個(gè)自動(dòng)編號(hào)稱為數(shù)組索引(index)或下標(biāo),可以通過(guò)數(shù)組的索引/下標(biāo)訪問(wèn)到數(shù)組中的元素。

數(shù)組名[索引/下標(biāo)]

數(shù)組的下標(biāo)范圍?

Java中數(shù)組的下標(biāo)從[0]開(kāi)始,下標(biāo)范圍是[0, 數(shù)組的長(zhǎng)度-1],即[0, 數(shù)組名.length-1]

數(shù)組元素下標(biāo)可以是整型常量或整型表達(dá)式。如a[3] , b[i] , c[6*i];

舉例

public class ArrayTest3 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};

        System.out.println("arr數(shù)組的長(zhǎng)度:" + arr.length);
        System.out.println("arr數(shù)組的第1個(gè)元素:" + arr[0]);//下標(biāo)從0開(kāi)始
        System.out.println("arr數(shù)組的第2個(gè)元素:" + arr[1]);
        System.out.println("arr數(shù)組的第3個(gè)元素:" + arr[2]);
        System.out.println("arr數(shù)組的第4個(gè)元素:" + arr[3]);
        System.out.println("arr數(shù)組的第5個(gè)元素:" + arr[4]);

        //修改第1個(gè)元素的值
        //此處arr[0]相當(dāng)于一個(gè)int類型的變量
        arr[0] = 100;
        System.out.println("arr數(shù)組的第1個(gè)元素:" + arr[0]);
    }
}

2.4 一維數(shù)組的遍歷

將數(shù)組中的每個(gè)元素分別獲取出來(lái),就是遍歷。for循環(huán)與數(shù)組的遍歷是絕配。

舉例1

public class ArrayTest4 {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5};
        //打印數(shù)組的屬性,輸出結(jié)果是5
        System.out.println("數(shù)組的長(zhǎng)度:" + arr.length);

        //遍歷輸出數(shù)組中的元素
        System.out.println("數(shù)組的元素有:");
        for(int i=0; i<arr.length; i++){
            System.out.println(arr[i]);
        }
    }
}

舉例2

public class ArrayTest5 {
    public static void main(String[] args) {
        int[] arr = new int[5];

        System.out.println("arr數(shù)組的長(zhǎng)度:" + arr.length);
        System.out.print("存儲(chǔ)數(shù)據(jù)到arr數(shù)組之前:[");
        for (int i = 0; i < arr.length; i++) {
            if(i==0){
                System.out.print(arr[i]);
            }else{
                System.out.print("," + arr[i]);
            }
        }
        System.out.println("]");

        //初始化
 		/* 
 		arr[0] = 2;
        arr[1] = 4;
        arr[2] = 6;
        arr[3] = 8;
        arr[4] = 10;
        */

        for (int i = 0; i < arr.length; i++) {
            arr[i] = (i+1) * 2;
        }

        System.out.print("存儲(chǔ)數(shù)據(jù)到arr數(shù)組之后:[");
        for (int i = 0; i < arr.length; i++) {
            if(i==0){
                System.out.print(arr[i]);
            }else{
                System.out.print("," + arr[i]);
            }
        }
        System.out.println("]");
    }
}

2.5 數(shù)組元素的默認(rèn)值

數(shù)組是引用類型,當(dāng)我們使用動(dòng)態(tài)初始化方式創(chuàng)建數(shù)組時(shí),元素值只是默認(rèn)值。例如:

public class ArrayTest6 {
	public static void main(String argv[]){
		int a[]= new int[5]; 
		System.out.println(a[3]); //a[3]的默認(rèn)值為0
	}
} 

對(duì)于基本數(shù)據(jù)類型而言,默認(rèn)初始化值各有不同。

對(duì)于引用數(shù)據(jù)類型而言,默認(rèn)初始化值為null(注意與0不同!)

public class ArrayTest7 {
    public static void main(String[] args) {
        //存儲(chǔ)26個(gè)字母
        char[] letters = new char[26];
        System.out.println("letters數(shù)組的長(zhǎng)度:" + letters.length);
        System.out.print("存儲(chǔ)字母到letters數(shù)組之前:[");
        for (int i = 0; i < letters.length; i++) {
            if(i==0){
                System.out.print(letters[i]);
            }else{
                System.out.print("," + letters[i]);
            }
        }
        System.out.println("]");

       //存儲(chǔ)5個(gè)姓名
        String[] names = new String[5];
        System.out.println("names數(shù)組的長(zhǎng)度:" + names.length);
        System.out.print("存儲(chǔ)姓名到names數(shù)組之前:[");
        for (int i = 0; i < names.length; i++) {
            if(i==0){
                System.out.print(names[i]);
            }else{
                System.out.print("," + names[i]);
            }
        }
        System.out.println("]");
    }
}

3. 多維數(shù)組的使用

3.1 概述

  • Java 語(yǔ)言里提供了支持多維數(shù)組的語(yǔ)法。

  • 如果說(shuō)可以把一維數(shù)組當(dāng)成幾何中的線性圖形,那么二維數(shù)組就相當(dāng)于是一個(gè)表格,像Excel中的表格、圍棋棋盤(pán)一樣。

  • 應(yīng)用舉例1:

    某公司2022年全年各個(gè)月份的銷售額進(jìn)行登記。按月份存儲(chǔ),可以使用一維數(shù)組。如下:

    int[] monthData = new int[]{23,43,22,34,55,65,44,67,45,78,67,66};
    

    如果改寫(xiě)為按季度為單位存儲(chǔ)怎么辦呢?

    int[][] quarterData = new int[][]{{23,43,22},{34,55,65},{44,67,45},{78,67,66}};
    
    • 應(yīng)用舉例2:

高一年級(jí)三個(gè)班級(jí)均由多個(gè)學(xué)生姓名構(gòu)成一個(gè)個(gè)數(shù)組。如下:

String[] class1 = new String[]{"段譽(yù)","令狐沖","任我行"};

String[] class2 = new String[]{"張三豐","周芷若"};

String[] class3 = new String[]{"趙敏","張無(wú)忌","韋小寶","楊過(guò)"};

藍(lán)框的幾個(gè)元素,可以使用一維數(shù)組來(lái)存儲(chǔ)。但現(xiàn)在發(fā)現(xiàn)每個(gè)元素下還有下拉框,其內(nèi)部還有元素,那就需要使用二維數(shù)組來(lái)存儲(chǔ):

  • 使用說(shuō)明

  • 對(duì)于二維數(shù)組的理解,可以看成是一維數(shù)組array1又作為另一個(gè)一維數(shù)組array2的元素而存在。
  • 其實(shí),從數(shù)組底層的運(yùn)行機(jī)制來(lái)看,其實(shí)沒(méi)有多維數(shù)組。

3.2 聲明與初始化

3.2.1 聲明

二維數(shù)組聲明的語(yǔ)法格式:

//推薦
元素的數(shù)據(jù)類型[][] 二維數(shù)組的名稱;

//不推薦
元素的數(shù)據(jù)類型  二維數(shù)組名[][];
//不推薦
元素的數(shù)據(jù)類型[]  二維數(shù)組名[];

例如:

public class Test20TwoDimensionalArrayDefine {
    public static void main(String[] args) {
        //存儲(chǔ)多組成績(jī)
        int[][] grades;

        //存儲(chǔ)多組姓名
        String[][] names;
    }
}

面試:

int[] x, y[];
//x是一維數(shù)組,y是二維數(shù)組

3.2.2 靜態(tài)初始化

格式:

int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};

定義一個(gè)名稱為arr的二維數(shù)組,二維數(shù)組中有三個(gè)一維數(shù)組

  • 每一個(gè)一維數(shù)組中具體元素也都已初始化
    • 第一個(gè)一維數(shù)組 arr[0] = {3,8,2};
    • 第二個(gè)一維數(shù)組 arr[1] = {2,7};
    • 第三個(gè)一維數(shù)組 arr[2] = {9,0,1,6};
  • 第三個(gè)一維數(shù)組的長(zhǎng)度表示方式:arr[2].length;
  • 注意特殊寫(xiě)法情況:int[] x,y[]; x是一維數(shù)組,y是二維數(shù)組。
  • 舉例1:
int[][] arr = {{1,2,3},{4,5,6},{7,8,9,10}};//聲明與初始化必須在一句完成

int[][] arr = new int[][]{{1,2,3},{4,5,6},{7,8,9,10}};

int[][] arr;
arr = new int[][]{{1,2,3},{4,5,6},{7,8,9,10}};

arr = new int[3][3]{{1,2,3},{4,5,6},{7,8,9,10}};//錯(cuò)誤,靜態(tài)初始化右邊new 數(shù)據(jù)類型[][]中不能寫(xiě)數(shù)字
  • 舉例2:
public class TwoDimensionalArrayInitialize {
    public static void main(String[] args) {
        //存儲(chǔ)多組成績(jī)
        int[][] grades = {
                    {89,75,99,100},
                    {88,96,78,63,100,86},
                    {56,63,58},
                    {99,66,77,88}
                };

        //存儲(chǔ)多組姓名
        String[][] names = {
            {"張三","李四", "王五", "趙六"},
            {"劉備","關(guān)羽","張飛","諸葛亮","趙云","馬超"},
            {"曹丕","曹植","曹沖"},
            {"孫權(quán)","周瑜","魯肅","黃蓋"}
        };
    }
}

3.2.3 動(dòng)態(tài)初始化

如果二維數(shù)組的每一個(gè)數(shù)據(jù),甚至是每一行的列數(shù),需要后期單獨(dú)確定,那么就只能使用動(dòng)態(tài)初始化方式了。動(dòng)態(tài)初始化方式分為兩種格式:

格式1:規(guī)則二維表:每一行的列數(shù)是相同的

//(1)確定行數(shù)和列數(shù)
元素的數(shù)據(jù)類型[][] 二維數(shù)組名 = new 元素的數(shù)據(jù)類型[m][n];
	//其中,m:表示這個(gè)二維數(shù)組有多少個(gè)一維數(shù)組?;蛘哒f(shuō)一共二維表有幾行
	//其中,n:表示每一個(gè)一維數(shù)組的元素有多少個(gè)?;蛘哒f(shuō)每一行共有一個(gè)單元格

//此時(shí)創(chuàng)建完數(shù)組,行數(shù)、列數(shù)確定,而且元素也都有默認(rèn)值

//(2)再為元素賦新值
二維數(shù)組名[行下標(biāo)][列下標(biāo)] = 值;

舉例:

int[][] arr = new int[3][2];
  • 定義了名稱為arr的二維數(shù)組

  • 二維數(shù)組中有3個(gè)一維數(shù)組

  • 每一個(gè)一維數(shù)組中有2個(gè)元素

  • 一維數(shù)組的名稱分別為arr[0], arr[1], arr[2]

  • 給第一個(gè)一維數(shù)組1腳標(biāo)位賦值為78寫(xiě)法是:arr[0][1] = 78;

格式2:不規(guī)則:每一行的列數(shù)不一樣

//(1)先確定總行數(shù)
元素的數(shù)據(jù)類型[][] 二維數(shù)組名 = new 元素的數(shù)據(jù)類型[總行數(shù)][];

//此時(shí)只是確定了總行數(shù),每一行里面現(xiàn)在是null

//(2)再確定每一行的列數(shù),創(chuàng)建每一行的一維數(shù)組
二維數(shù)組名[行下標(biāo)] = new 元素的數(shù)據(jù)類型[該行的總列數(shù)];

//此時(shí)已經(jīng)new完的行的元素就有默認(rèn)值了,沒(méi)有new的行還是null

//(3)再為元素賦值
二維數(shù)組名[行下標(biāo)][列下標(biāo)] = 值;

舉例:

int[][] arr = new int[3][];
  • 二維數(shù)組中有3個(gè)一維數(shù)組。
  • 每個(gè)一維數(shù)組都是默認(rèn)初始化值null (注意:區(qū)別于格式1)
  • 可以對(duì)這個(gè)三個(gè)一維數(shù)組分別進(jìn)行初始化:arr[0] = new int[3]; arr[1] = new int[1]; arr[2] = new int[2];
  • 注:int[][]arr = new int[][3]; //非法

練習(xí):

/*
 1
 2 2
 3 3 3
 4 4 4 4
 5 5 5 5 5
 */
public class Test25DifferentElementCount {
    public static void main(String[] args){
        //1、聲明一個(gè)二維數(shù)組,并且確定行數(shù)
        //因?yàn)槊恳恍械牧袛?shù)不同,這里無(wú)法直接確定列數(shù)
        int[][]  arr = new int[5][];

        //2、確定每一行的列數(shù)
        for(int i=0; i<arr.length; i++){
			/*
			arr[0] 的列數(shù)是1
			arr[1] 的列數(shù)是2
			arr[2] 的列數(shù)是3
			arr[3] 的列數(shù)是4
			arr[4] 的列數(shù)是5
			*/
            arr[i] = new int[i+1];
        }

        //3、確定元素的值
        for(int i=0; i<arr.length; i++){
            for(int j=0; j<arr[i].length; j++){
                arr[i][j] = i+1;
            }
        }

        //4、遍歷顯示
        for(int i=0; i<arr.length; i++){
            for(int j=0; j<arr[i].length; j++){
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }

    }
}

3.3 數(shù)組的長(zhǎng)度和角標(biāo)

  • 二維數(shù)組的長(zhǎng)度/行數(shù):二維數(shù)組名.length
  • 二維數(shù)組的某一行:二維數(shù)組名[行下標(biāo)],此時(shí)相當(dāng)于獲取其中一組數(shù)據(jù)。它本質(zhì)上是一個(gè)一維數(shù)組。行下標(biāo)的范圍:[0, 二維數(shù)組名.length-1]。此時(shí)把二維數(shù)組看成一維數(shù)組的話,元素是行對(duì)象。
  • 某一行的列數(shù):二維數(shù)組名[行下標(biāo)].length,因?yàn)槎S數(shù)組的每一行是一個(gè)一維數(shù)組。
  • 某一個(gè)元素:二維數(shù)組名[行下標(biāo)][列下標(biāo)],即先確定行/組,再確定列。
public class Test22TwoDimensionalArrayUse {
    public static void main(String[] args){
        //存儲(chǔ)3個(gè)小組的學(xué)員的成績(jī),分開(kāi)存儲(chǔ),使用二維數(shù)組。
		/*
		int[][] scores1;
		int scores2[][];
		int[] scores3[];*/

        int[][] scores = {
                {85,96,85,75},
                {99,96,74,72,75},
                {52,42,56,75}
        };

        System.out.println(scores);//[[I@15db9742
        System.out.println("一共有" + scores.length +"組成績(jī).");

        //[[:代表二維數(shù)組,I代表元素類型是int
        System.out.println(scores[0]);//[I@6d06d69c
        //[:代表一維數(shù)組,I代表元素類型是int
        System.out.println(scores[1]);//[I@7852e922
        System.out.println(scores[2]);//[I@4e25154f
        //System.out.println(scores[3]);//ArrayIndexOutOfBoundsException: 3

        System.out.println("第1組有" + scores[0].length +"個(gè)學(xué)員.");
        System.out.println("第2組有" + scores[1].length +"個(gè)學(xué)員.");
        System.out.println("第3組有" + scores[2].length +"個(gè)學(xué)員.");

        System.out.println("第1組的每一個(gè)學(xué)員成績(jī)?nèi)缦拢?);
        //第一行的元素
        System.out.println(scores[0][0]);//85
        System.out.println(scores[0][1]);//96
        System.out.println(scores[0][2]);//85
        System.out.println(scores[0][3]);//75
        //System.out.println(scores[0][4]);//java.lang.ArrayIndexOutOfBoundsException: 4
    }
}

3.4 二維數(shù)組的遍歷

  • 格式:
for(int i=0; i<二維數(shù)組名.length; i++){ //二維數(shù)組對(duì)象.length
    for(int j=0; j<二維數(shù)組名[i].length; j++){//二維數(shù)組行對(duì)象.length
        System.out.print(二維數(shù)組名[i][j]);
    }
    System.out.println();
}
  • 舉例:
public class Test23TwoDimensionalArrayIterate {
    public static void main(String[] args) {
        //存儲(chǔ)3個(gè)小組的學(xué)員的成績(jī),分開(kāi)存儲(chǔ),使用二維數(shù)組。
        int[][] scores = {
                {85,96,85,75},
                {99,96,74,72,75},
                {52,42,56,75}
        };

        System.out.println("一共有" + scores.length +"組成績(jī).");
        for (int i = 0; i < scores.length; i++) {
            System.out.print("第" + (i+1) +"組有" + scores[i].length + "個(gè)學(xué)員,成績(jī)?nèi)缦拢?);
            for (int j = 0; j < scores[i].length; j++) {
                System.out.print(scores[i][j]+"\t");
            }
            System.out.println();
        }
    }
}

4. Arrays工具類的使用

java.util.Arrays類即為操作數(shù)組的工具類,包含了用來(lái)操作數(shù)組(比如排序和搜索)的各種方法。 比如:

  • 數(shù)組元素拼接
    • static String toString(int[] a) :字符串表示形式由數(shù)組的元素列表組成,括在方括號(hào)(“[]”)中。相鄰元素用字符 ", "(逗號(hào)加空格)分隔。形式為:[元素1,元素2,元素3。。。]
    • static String toString(Object[] a) :字符串表示形式由數(shù)組的元素列表組成,括在方括號(hào)(“[]”)中。相鄰元素用字符 ", "(逗號(hào)加空格)分隔。元素將自動(dòng)調(diào)用自己從Object繼承的toString方法將對(duì)象轉(zhuǎn)為字符串進(jìn)行拼接,如果沒(méi)有重寫(xiě),則返回類型@hash值,如果重寫(xiě)則按重寫(xiě)返回的字符串進(jìn)行拼接。
  • 數(shù)組排序
    • static void sort(int[] a) :將a數(shù)組按照從小到大進(jìn)行排序
    • static void sort(int[] a, int fromIndex, int toIndex) :將a數(shù)組的[fromIndex, toIndex)部分按照升序排列
    • static void sort(Object[] a) :根據(jù)元素的自然順序?qū)χ付▽?duì)象數(shù)組按升序進(jìn)行排序。
    • static void sort(T[] a, Comparator<? super T> c) :根據(jù)指定比較器產(chǎn)生的順序?qū)χ付▽?duì)象數(shù)組進(jìn)行排序。
  • 數(shù)組元素的二分查找
    • static int binarySearch(int[] a, int key) 、static int binarySearch(Object[] a, Object key) :要求數(shù)組有序,在數(shù)組中查找key是否存在,如果存在返回第一次找到的下標(biāo),不存在返回負(fù)數(shù)。
  • 數(shù)組的復(fù)制
    • static int[] copyOf(int[] original, int newLength) :根據(jù)original原數(shù)組復(fù)制一個(gè)長(zhǎng)度為newLength的新數(shù)組,并返回新數(shù)組
    • static T[] copyOf(T[] original,int newLength):根據(jù)original原數(shù)組復(fù)制一個(gè)長(zhǎng)度為newLength的新數(shù)組,并返回新數(shù)組
    • static int[] copyOfRange(int[] original, int from, int to) :復(fù)制original原數(shù)組的[from,to)構(gòu)成新數(shù)組,并返回新數(shù)組
    • static T[] copyOfRange(T[] original,int from,int to):復(fù)制original原數(shù)組的[from,to)構(gòu)成新數(shù)組,并返回新數(shù)組
  • 比較兩個(gè)數(shù)組是否相等
    • static boolean equals(int[] a, int[] a2) :比較兩個(gè)數(shù)組的長(zhǎng)度、元素是否完全相同
    • static boolean equals(Object[] a,Object[] a2):比較兩個(gè)數(shù)組的長(zhǎng)度、元素是否完全相同
  • 填充數(shù)組
    • static void fill(int[] a, int val) :用val值填充整個(gè)a數(shù)組
    • static void fill(Object[] a,Object val):用val對(duì)象填充整個(gè)a數(shù)組
    • static void fill(int[] a, int fromIndex, int toIndex, int val):將a數(shù)組[fromIndex,toIndex)部分填充為val值
    • static void fill(Object[] a, int fromIndex, int toIndex, Object val) :將a數(shù)組[fromIndex,toIndex)部分填充為val對(duì)象

舉例:java.util.Arrays類的sort()方法提供了數(shù)組元素排序功能:

import java.util.Arrays;
public class SortTest {
	public static void main(String[] args) {
		int[] arr = {3, 2, 5, 1, 6};
        System.out.println("排序前" + Arrays.toString(arr));
        Arrays.sort(arr);
        System.out.println("排序后" + Arrays.toString(arr));
	}
}

總結(jié) 

到此這篇關(guān)于Java從入門(mén)到起飛之?dāng)?shù)組使用的文章就介紹到這了,更多相關(guān)Java數(shù)組詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVA初級(jí)項(xiàng)目——實(shí)現(xiàn)圖書(shū)管理系統(tǒng)

    JAVA初級(jí)項(xiàng)目——實(shí)現(xiàn)圖書(shū)管理系統(tǒng)

    這篇文章主要介紹了JAVA如何實(shí)現(xiàn)圖書(shū)管理系統(tǒng),文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 一文秒懂?kafka?HA(高可用)

    一文秒懂?kafka?HA(高可用)

    這篇文章主要介紹了秒懂?kafka?HA(高可用)的相關(guān)知識(shí),本文我們來(lái)說(shuō)一說(shuō)和?kafka?高可用相關(guān)的一些策略,對(duì)kafka?HA相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-11-11
  • Java8時(shí)間api之LocalDate/LocalDateTime的用法詳解

    Java8時(shí)間api之LocalDate/LocalDateTime的用法詳解

    在項(xiàng)目中,時(shí)間的使用必不可少,而java8之前的時(shí)間api?Date和Calander等在使用上存在著很多問(wèn)題,于是,jdk1.8引進(jìn)了新的時(shí)間api-LocalDateTime,本文就來(lái)講講它的具體使用吧
    2023-05-05
  • Java基于NIO實(shí)現(xiàn)群聊功能

    Java基于NIO實(shí)現(xiàn)群聊功能

    這篇文章主要為大家詳細(xì)介紹了Java基于NIO實(shí)現(xiàn)群聊功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Springboot通過(guò)run啟動(dòng)web應(yīng)用的方法

    Springboot通過(guò)run啟動(dòng)web應(yīng)用的方法

    這篇文章主要介紹了Springboot通過(guò)run啟動(dòng)web應(yīng)用的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Win10?IDEA如何連接虛擬機(jī)中的Hadoop(HDFS)

    Win10?IDEA如何連接虛擬機(jī)中的Hadoop(HDFS)

    在虛擬機(jī)上配置Hadoop并修改core-site.xml文件,設(shè)置IP為局域網(wǎng)地址,IDEA中創(chuàng)建Maven項(xiàng)目,添加依賴,并檢查Hadoop重啟和端口轉(zhuǎn)發(fā),提供test.bat文件,通過(guò)修改IP簡(jiǎn)化使用過(guò)程
    2024-11-11
  • Java中關(guān)于文件路徑讀取問(wèn)題的分析

    Java中關(guān)于文件路徑讀取問(wèn)題的分析

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著Java中關(guān)于文件路徑讀取問(wèn)題展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • java使用JSONObject實(shí)例

    java使用JSONObject實(shí)例

    JAVA中JSONObject對(duì)象的使用方法
    2013-11-11
  • 簡(jiǎn)單解析execute和submit有什么區(qū)別

    簡(jiǎn)單解析execute和submit有什么區(qū)別

    這篇文章主要介紹了簡(jiǎn)單解析execute和submit有什么區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • xxl-job 帶參數(shù)執(zhí)行和高可用部署方法

    xxl-job 帶參數(shù)執(zhí)行和高可用部署方法

    這篇文章主要介紹了xxl-job 帶參數(shù)執(zhí)行和高可用部署,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04

最新評(píng)論