四、Java中的數(shù)組

1. 數(shù)組的概念

數(shù)組可以理解為是一個(gè)巨大的“盒子”,里面可以按順序存放多個(gè)類(lèi)型相同的數(shù)據(jù),比如可以定義 int 型的數(shù)組 scores 存儲(chǔ) 4 名學(xué)生的成績(jī)。

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

2.1 一維數(shù)組的聲明和初始化
  • 聲明
int[] a;

int a[];

推薦使用第一種方式

  • 初始化
    數(shù)組的特點(diǎn):定長(zhǎng)的,初始化后不可更改長(zhǎng)度,要求在初始化時(shí)必須指定長(zhǎng)度(最大存儲(chǔ)量)
    示例1:聲明了一個(gè)可以最多存儲(chǔ)5個(gè)數(shù)字的數(shù)組,此時(shí)沒(méi)有指定具體數(shù)字,int類(lèi)型默認(rèn)值為0,數(shù)組中相當(dāng)于存儲(chǔ)了5個(gè)“0”。
int[] a = new int[5];

示例2:聲明了一個(gè)可以最多存儲(chǔ)5個(gè)數(shù)字的數(shù)組,此時(shí)指定了具體的數(shù)字分別是1,2,5,12和7

int[] b = {1,2,5,12,7};
int[] c = new int[]{1,2,5,12,7};

2.2 一維數(shù)組的訪問(wèn)

需要通過(guò)下標(biāo)去訪問(wèn)數(shù)組中的某個(gè)元素
下標(biāo):從0開(kāi)始,下標(biāo)最大值是(數(shù)組的長(zhǎng)度-1) [0, 最大長(zhǎng)度-1]
示例3:查看數(shù)組中的第2個(gè)元素

System.out.println(a[1]);

示例4:修改數(shù)組中的第4個(gè)元素的值為35

a[3] = 35;

如果使用了一個(gè)超過(guò)下標(biāo)范圍的數(shù)字作為數(shù)組下標(biāo)使用,代碼會(huì)發(fā)生問(wèn)題。
比如長(zhǎng)度是5的數(shù)組a,最大下標(biāo)是4,訪問(wèn)a[5]就會(huì)發(fā)生下述異常

image

java.lang.ArrayIndexOutOfBoundsException:數(shù)組下標(biāo)越界異常

2.3 遍歷數(shù)組

訪問(wèn)數(shù)組中的所有元素
數(shù)組屬性 a.length 表示數(shù)組的長(zhǎng)度

int[] a = {23,12,11,15,28,42,31,55,8,17,12};
for(int i = 0; i < a.length; i++) {
    System.out.println(a[i]);
}

示例5:給定數(shù)組 {23,12,11,15,28,42,31,55,8,17,12},請(qǐng)計(jì)算平均值

int[] a = {23,12,11,15,28,42,31,55,8,17,12};
int sum = 0;
for(int i = 0; i < a.length; i++) {
    sum += a[i];
}
int avg = sum / a.length;
System.out.println(avg);

示例6:找到數(shù)組中的最小值

int[] a = {23,12,11,15,28,42,31,55,8,17,12};
int min = a[0];
for(int i = 1; i < a.length; i++) {
    if(a[i] < min) {
        min = a[i];
    }
}
System.out.println(min);

3. 多維數(shù)組的聲明和使用(了解)

多維數(shù)組可以理解為:
二維數(shù)組是一種類(lèi)似“表結(jié)構(gòu)”
三維數(shù)組是一種類(lèi)似“空間結(jié)構(gòu)”
更高維的數(shù)組在現(xiàn)實(shí)世界中很少意義
實(shí)際上,多維數(shù)組是:數(shù)組類(lèi)型的數(shù)組
以二維數(shù)組為例理解多維數(shù)組的概念

3.1 二維數(shù)組的聲明和初始化
3.1.1 二維數(shù)組的聲明
int[][] a;

int a[][];

int[] a[];

推薦使用第一種方式聲明二維數(shù)組

3.1.2 二維數(shù)組的初始化

指定第一維的長(zhǎng)度和第二維的長(zhǎng)度

int[][] a = new int[3][4];

指定第一維的長(zhǎng)度而不指定第二維的長(zhǎng)度

int[][] a = new int[3][];

不允許在未指定第一維時(shí),直接指定第二維
不允許兩個(gè)維度的長(zhǎng)度都不指定
下面這個(gè)是一個(gè)錯(cuò)誤的示例

int[][] a = new int[][4]; //錯(cuò)誤示例??!
int[][] a = new int[][]; //錯(cuò)誤示例?。?/p>

可以直接數(shù)字的初始化,初始化了一個(gè)3x4的數(shù)組
第一維的長(zhǎng)度為3,第二維的長(zhǎng)度為4

int[][] a = {{1,2,3,4},{5,6,7,8},{1,4,2,8}};

1 2 3 4
5 6 7 8
1 4 2 8

初始化一個(gè)“鋸齒數(shù)組”

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

1 2 3
5 6 7 8 9
1 4 2 8
3.2 二維數(shù)組的遍歷

二維數(shù)組a中
a.length得到第一維長(zhǎng)度、
a[i].length對(duì)應(yīng)的二維長(zhǎng)度

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

for(int i = 0; i < a.length; i++) {//遍歷第一維
    for(int j = 0; j < a[i].length; j++) {
        System.out.print(a[i][j]);
        System.out.print("\t");
    }
    System.out.println();
}

4. 數(shù)組的排序(重要)

一維數(shù)組的內(nèi)部排序

內(nèi)部排序指的是不借助其他數(shù)組完成數(shù)組內(nèi)部排序

4.1 冒泡排序法(重點(diǎn))

冒泡排序是一種穩(wěn)定排序,兩個(gè)相同數(shù)字的相對(duì)位置不會(huì)發(fā)生改變
所謂穩(wěn)定"{12(a),11,15,6,2,9,12(b),7}"
穩(wěn)定排序的結(jié)果一定是"{2,6,7,9,11,12(a),12(b),15}"
不穩(wěn)定排序結(jié)果不一定是這樣
數(shù)組中,相鄰兩個(gè)數(shù)進(jìn)行比較,較大數(shù)放在后面,不斷地進(jìn)行這個(gè)過(guò)程。最大的數(shù)就會(huì)被放到結(jié)尾(升序)
冒泡排序法一個(gè)數(shù)的示例圖

image

類(lèi)似地繼續(xù)地從頭冒第二個(gè)數(shù),第三個(gè)數(shù)...直到將所有的數(shù)字都放在合適的位置上

代碼:

int temp = 0; 
for(int i = 1; i < a.length; i++) {
    for(int j = 0; j < a.length-i; j++) {   
        if(a[j] > a[j+1]) {
            temp = a[j];
            a[j] = a[j+1];
            a[j+1] = temp;
        }
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 數(shù)組(Array) 什么是數(shù)組 數(shù)組是最常見(jiàn)的一種數(shù)據(jù)結(jié)構(gòu),它是相同類(lèi)型的用一個(gè)標(biāo)識(shí)符封裝到一起的基本類(lèi)型數(shù)據(jù)序列...
    夜雨流云閱讀 505評(píng)論 0 0
  • 學(xué)習(xí)目的 掌握數(shù)組的概念 掌握一維數(shù)組和二維數(shù)組的定義、初始化、賦值及循環(huán)遍歷 掌握數(shù)組的常用方法(復(fù)制和擴(kuò)容) ...
    從前的小余兒閱讀 169評(píng)論 0 0
  • 1. 數(shù)組的概念 數(shù)組可以理解為是一個(gè)巨大的“盒子”,里面可以按順序存放多個(gè)類(lèi)型相同的數(shù)據(jù),比如可以定義 int ...
    落葉柒閱讀 294評(píng)論 0 1
  • 1.了解數(shù)組 數(shù)組,大家都不陌生,數(shù)組對(duì)于每一門(mén)編程語(yǔ)言都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同編程語(yǔ)言對(duì)于數(shù)組的應(yīng)用和實(shí)...
    凝時(shí)閱讀 289評(píng)論 0 1
  • 1 數(shù)組No11 數(shù)組:存放一組相同類(lèi)型數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu) 數(shù)組本身是引用數(shù)據(jù)類(lèi)型,數(shù)組中的元素可以是基本數(shù)據(jù)類(lèi)型...
    征程_Journey閱讀 733評(píng)論 0 1

友情鏈接更多精彩內(nèi)容