Java從入門到起飛之?dāng)?shù)組使用詳解
1. 數(shù)組的概述
1.1 為什么需要數(shù)組
需求分析1:
需要統(tǒng)計(jì)某公司50個(gè)員工的工資情況,例如計(jì)算平均工資、找到最高工資等。用之前知識(shí),首先需要聲明50個(gè)變量來分別記錄每位員工的工資,這樣會(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è)名字命名,并通過編號(hào)的方式對(duì)這些數(shù)據(jù)進(jìn)行統(tǒng)一管理。
數(shù)組中的概念
- 數(shù)組名
- 下標(biāo)(或索引)
- 元素
- 數(shù)組的長度

數(shù)組的特點(diǎn):
- 數(shù)組本身是引用數(shù)據(jù)類型,而數(shù)組中的元素可以是任何數(shù)據(jù)類型,包括基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。
- 創(chuàng)建數(shù)組對(duì)象會(huì)在內(nèi)存中開辟一整塊連續(xù)的空間。占據(jù)的空間的大小,取決于數(shù)組的長度和數(shù)組中元素的類型。
- 數(shù)組中的元素在內(nèi)存中是依次緊密排列的,有序的。
- 數(shù)組,一旦初始化完成,其長度就是確定的。數(shù)組的長度一旦確定,就不能修改。
- 我們可以直接通過下標(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ù),只是這里的二維表每一行長度不要求一樣。

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ī)范來命名。數(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語言中聲明數(shù)組時(shí)不能指定其長度(數(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ù)組的長度由靜態(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è)語句中完成,不能分成兩個(gè)語句寫
例如,定義存儲(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};//右邊不需要寫new int[]
int[] nums;
nums = new int[]{10,20,30,40}; //聲明和初始化在兩個(gè)語句完成,就不能使用new int[]
char[] word = {'h','e','l','l','o'};
String[] heros = {"袁隆平","鄧稼先","錢學(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ù)組元素的賦值操作分開進(jìn)行,即為動(dòng)態(tài)初始化。
動(dòng)態(tài)初始化中,只確定了元素的個(gè)數(shù)(即數(shù)組的長度),而元素值此時(shí)只是默認(rèn)值,還并未真正賦自己期望的值。真正期望的數(shù)據(jù)需要后續(xù)單獨(dú)一個(gè)一個(gè)賦值。
格式:
數(shù)組存儲(chǔ)的元素的數(shù)據(jù)類型[] 數(shù)組名字 = new 數(shù)組存儲(chǔ)的元素的數(shù)據(jù)類型[長度]; 或 數(shù)組存儲(chǔ)的數(shù)據(jù)類型[] 數(shù)組名字; 數(shù)組名字 = new 數(shù)組存儲(chǔ)的數(shù)據(jù)類型[長度];
[長度]:數(shù)組的長度,表示數(shù)組容器中可以最多存儲(chǔ)多少個(gè)元素。
**注意:數(shù)組有定長特性,長度一旦指定,不可更改。**和水杯道理相同,買了一個(gè)2升的水杯,總?cè)萘烤褪?升是固定的。
舉例1:正確寫法
int[] arr = new int[5]; int[] arr; arr = new int[5];
舉例2:錯(cuò)誤寫法
int[] arr = new int[5]{1,2,3,4,5};//錯(cuò)誤的,后面有{}指定元素列表,就不需要在[]中指定元素個(gè)數(shù)了。
2.3 一維數(shù)組的使用
2.3.1 數(shù)組的長度
- 數(shù)組的元素總個(gè)數(shù),即數(shù)組的長度
- 每個(gè)數(shù)組都有一個(gè)屬性length指明它的長度,例如:arr.length 指明數(shù)組arr的長度(即元素個(gè)數(shù))
- 每個(gè)數(shù)組都具有長度,而且一旦初始化,其長度就是確定,且是不可變的。
2.3.2 數(shù)組元素的引用
如何表示數(shù)組中的一個(gè)元素?
每一個(gè)存儲(chǔ)到數(shù)組的元素,都會(huì)自動(dòng)的擁有一個(gè)編號(hào),從0開始,這個(gè)自動(dòng)編號(hào)稱為數(shù)組索引(index)或下標(biāo),可以通過數(shù)組的索引/下標(biāo)訪問到數(shù)組中的元素。
數(shù)組名[索引/下標(biāo)]
數(shù)組的下標(biāo)范圍?
Java中數(shù)組的下標(biāo)從[0]開始,下標(biāo)范圍是[0, 數(shù)組的長度-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ù)組的長度:" + arr.length);
System.out.println("arr數(shù)組的第1個(gè)元素:" + arr[0]);//下標(biāo)從0開始
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è)元素分別獲取出來,就是遍歷。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ù)組的長度:" + 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ù)組的長度:" + 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ù)組的長度:" + 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ù)組的長度:" + 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 語言里提供了支持多維數(shù)組的語法。
如果說可以把一維數(shù)組當(dāng)成幾何中的線性圖形,那么二維數(shù)組就相當(dāng)于是一個(gè)表格,像Excel中的表格、圍棋棋盤一樣。
應(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};如果改寫為按季度為單位存儲(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[]{"趙敏","張無忌","韋小寶","楊過"};藍(lán)框的幾個(gè)元素,可以使用一維數(shù)組來存儲(chǔ)。但現(xiàn)在發(fā)現(xiàn)每個(gè)元素下還有下拉框,其內(nèi)部還有元素,那就需要使用二維數(shù)組來存儲(chǔ):
使用說明

- 對(duì)于二維數(shù)組的理解,可以看成是一維數(shù)組array1又作為另一個(gè)一維數(shù)組array2的元素而存在。
- 其實(shí),從數(shù)組底層的運(yùn)行機(jī)制來看,其實(shí)沒有多維數(shù)組。
3.2 聲明與初始化
3.2.1 聲明
二維數(shù)組聲明的語法格式:
//推薦 元素的數(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ù)組的長度表示方式:arr[2].length;
- 注意特殊寫法情況: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ù)類型[][]中不能寫數(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一共二維表有幾行 //其中,n:表示每一個(gè)一維數(shù)組的元素有多少個(gè)?;蛘哒f每一行共有一個(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寫法是:
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)值了,沒有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ù)不同,這里無法直接確定列數(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ù)組的長度和角標(biāo)
- 二維數(shù)組的長度/行數(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ī),分開存儲(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ī),分開存儲(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ù)組的工具類,包含了用來操作數(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)行拼接,如果沒有重寫,則返回類型@hash值,如果重寫則按重寫返回的字符串進(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è)長度為newLength的新數(shù)組,并返回新數(shù)組
- static T[] copyOf(T[] original,int newLength):根據(jù)original原數(shù)組復(fù)制一個(gè)長度為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ù)組的長度、元素是否完全相同
- static boolean equals(Object[] a,Object[] a2):比較兩個(gè)數(shù)組的長度、元素是否完全相同
- 填充數(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從入門到起飛之?dāng)?shù)組使用的文章就介紹到這了,更多相關(guān)Java數(shù)組詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JAVA初級(jí)項(xiàng)目——實(shí)現(xiàn)圖書管理系統(tǒng)
這篇文章主要介紹了JAVA如何實(shí)現(xiàn)圖書管理系統(tǒng),文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06
Java8時(shí)間api之LocalDate/LocalDateTime的用法詳解
在項(xiàng)目中,時(shí)間的使用必不可少,而java8之前的時(shí)間api?Date和Calander等在使用上存在著很多問題,于是,jdk1.8引進(jìn)了新的時(shí)間api-LocalDateTime,本文就來講講它的具體使用吧2023-05-05
Springboot通過run啟動(dòng)web應(yīng)用的方法
這篇文章主要介紹了Springboot通過run啟動(dòng)web應(yīng)用的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
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文件,通過修改IP簡(jiǎn)化使用過程2024-11-11
簡(jiǎn)單解析execute和submit有什么區(qū)別
這篇文章主要介紹了簡(jiǎn)單解析execute和submit有什么區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
xxl-job 帶參數(shù)執(zhí)行和高可用部署方法
這篇文章主要介紹了xxl-job 帶參數(shù)執(zhí)行和高可用部署,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04

