這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何進(jìn)行java數(shù)組解析,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)主要為客戶提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)視覺設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站程序開發(fā)、HTML5響應(yīng)式成都網(wǎng)站建設(shè)、手機(jī)網(wǎng)站開發(fā)、微商城、網(wǎng)站托管及成都企業(yè)網(wǎng)站維護(hù)、WEB系統(tǒng)開發(fā)、域名注冊(cè)、國(guó)內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測(cè)試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為成都花箱行業(yè)客戶提供了網(wǎng)站推廣服務(wù)。
數(shù)組(array)是相同類型變量的集合,可以使用共同的名字引用它。數(shù)組可被定義為任何類型,可以是一維或多維。數(shù)組中的一個(gè)特別要素是通過下標(biāo)來(lái)訪問它。數(shù)組提供了一種將有聯(lián)系的信息分組的便利方法。
注意:如果你熟悉C/C++ ,請(qǐng)注意,Java 數(shù)組的工作原理與它們不同。
1 一維數(shù)組
一維數(shù)組(one-dimensional array )實(shí)質(zhì)上是相同類型變量列表。要?jiǎng)?chuàng)建一個(gè)數(shù)組,你必須首先定義數(shù)組變量所需的類型。通用的一維數(shù)組的聲明格式是:
type var-name[ ];
其中,type 定義了數(shù)組的基本類型。基本類型決定了組成數(shù)組的每一個(gè)基本元素的數(shù)據(jù)類型。這樣,數(shù)組的基本類型決定了數(shù)組存儲(chǔ)的數(shù)據(jù)類型。例如,下面的例子定義了數(shù)據(jù)類型為int ,名為month_days 的數(shù)組。
int month_days[];
盡管該例子定義了month_days 是一個(gè)數(shù)組變量的事實(shí),但實(shí)際上沒有數(shù)組變量存在。事實(shí)上,month_days 的值被設(shè)置為空,它代表一個(gè)數(shù)組沒有值。為了使數(shù)組month_days 成為實(shí)際的、物理上存在的整型數(shù)組,你必須用運(yùn)算符new 來(lái)為其分配地址并且把它賦給month_days 。運(yùn)算符new 是專門用來(lái)分配內(nèi)存的運(yùn)算符。
你將在后面章節(jié)中更進(jìn)一步了解運(yùn)算符new,但是你現(xiàn)在需要使用它來(lái)為數(shù)組分配內(nèi)存。當(dāng)運(yùn)算符new被應(yīng)用到一維數(shù)組時(shí),它的一般形式如下:
array-var = new type[size];
其中,type 指定被分配的數(shù)據(jù)類型,size指定數(shù)組中變量的個(gè)數(shù),array-var 是被鏈接到數(shù)組的數(shù)組變量。也就是,使用運(yùn)算符new 來(lái)分配數(shù)組,你必須指定數(shù)組元素的類型和數(shù)組元素的個(gè)數(shù)。用運(yùn)算符new 分配數(shù)組后,數(shù)組中的元素將會(huì)被自動(dòng)初始化為零。下面的例子分配了一個(gè)12個(gè)整型元素的數(shù)組并把它們和數(shù)組month_days 鏈接起來(lái)。
month_days = new int[12];
通過這個(gè)語(yǔ)句的執(zhí)行,數(shù)組month_days 將會(huì)指向12個(gè)整數(shù),而且數(shù)組中的所有元素將被初始化為零。
讓我們回顧一下上面的過程:獲得一個(gè)數(shù)組需要2步。第一步,你必須定義變量所需的類型。第二步,你必須使用運(yùn)算符new來(lái)為數(shù)組所要存儲(chǔ)的數(shù)據(jù)分配內(nèi)存,并把它們分配給數(shù)組變量。這樣Java 中的數(shù)組被動(dòng)態(tài)地分配。如果動(dòng)態(tài)分配的概念對(duì)你陌生,別擔(dān)心,它將在本書的后面詳細(xì)討論。
一旦你分配了一個(gè)數(shù)組,你可以在方括號(hào)內(nèi)指定它的下標(biāo)來(lái)訪問數(shù)組中特定的元素。
所有的數(shù)組下標(biāo)從零開始。例如,下面的語(yǔ)句將值28賦給數(shù)組month_days 的第二個(gè)元素。
month_days[1] = 28;
下面的程序顯示存儲(chǔ)在下標(biāo)為3的數(shù)組元素中的值。
System.out.println ( month_days [ 3 ]);
綜上所述,下面程序定義的數(shù)組存儲(chǔ)了每月的天數(shù)。
// Demonstrate a one-dimensional array.
class Array {
public static void main(String args[]) {
int month_days[];
month_days = new int[12];
month_days[0] = 31;
month_days[1] = 28;
month_days[2] = 31;
month_days[3] = 30;
month_days[4] = 31;
month_days[5] = 30;
month_days[6] = 31;
month_days[7] = 31;
month_days[8] = 30;
month_days[9] = 31;
month_days[10] = 30;
month_days[11] = 31;
System.out.println("April has " + month_days[3] + " days.");
}
}
當(dāng)你運(yùn)行這個(gè)程序時(shí),它打印出4月份的天數(shù)。如前面提到的,Java 數(shù)組下標(biāo)從零開始,因此4月份的天數(shù)數(shù)組元素為month_days[3] 或30。
將對(duì)數(shù)組變量的聲明和對(duì)數(shù)組本身的分配結(jié)合起來(lái)是可以的,如下所示:
int month_days[] = new int[12];
這將是你通常看見的編寫Java 程序的專業(yè)做法。
數(shù)組可以在聲明時(shí)被初始化。這個(gè)過程和簡(jiǎn)單類型初始化的過程一樣。數(shù)組的初始化(array initializer )就是包括在花括號(hào)之內(nèi)用逗號(hào)分開的表達(dá)式的列表。逗號(hào)分開了數(shù)組元素的值。Java 會(huì)自動(dòng)地分配一個(gè)足夠大的空間來(lái)保存你指定的初始化元素的個(gè)數(shù),而不必使用運(yùn)算符new。例如,為了存儲(chǔ)每月中的天數(shù),下面的程序定義了一個(gè)初始化的整數(shù)數(shù)組:// An improved version of the previous program.
class AutoArray {
public static void main(String args[]) {
int month_days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31,
30, 31 };
System.out.println("April has " + month_days[3] + " days.");
}
}
當(dāng)你運(yùn)行這個(gè)程序時(shí),你會(huì)看到它和前一個(gè)程序產(chǎn)生的輸出一樣。
Java 嚴(yán)格地檢查以保證你不會(huì)意外地去存儲(chǔ)或引用在數(shù)組范圍以外的值。Java 的運(yùn)行系統(tǒng)會(huì)檢查以確保所有的數(shù)組下標(biāo)都在正確的范圍以內(nèi)(在這方面,Java 與C/C++ 從根本上不同,C/C++ 不提供運(yùn)行邊界檢查)。例如,運(yùn)行系統(tǒng)將檢查數(shù)組month_days 的每個(gè)下標(biāo)的值以保證它包括在0和11之間。如果你企圖訪問數(shù)組邊界以外(負(fù)數(shù)或比數(shù)組邊界大)的元素,你將引起運(yùn)行錯(cuò)誤。
下面的例子運(yùn)用一維數(shù)組來(lái)計(jì)算一組數(shù)字的平均數(shù)。
// Average an array of values.
class Average {
public static void main(String args[]) {
double nums[] = {10.1, 11.2, 12.3, 13.4, 14.5};
double result = 0;
int i;
for(i=0; i<5; i++)
result = result + nums;
System.out.println("Average is " + result / 5);
}
}
2 多維數(shù)組
在Java 中,多維數(shù)組(multidimensional arrays )實(shí)際上是數(shù)組的數(shù)組。你可能期望,這些數(shù)組形式上和行動(dòng)上和一般的多維數(shù)組一樣。然而,你將看到,有一些微妙的差別。定義多維數(shù)組變量要將每個(gè)維數(shù)放在它們各自的方括號(hào)中。例如,下面語(yǔ)句定義了一個(gè)名為twoD 的二維數(shù)組變量。
int twoD[][] = new int[4][5];
該語(yǔ)句分配了一個(gè)4行5列的數(shù)組并把它分配給數(shù)組twoD 。實(shí)際上這個(gè)矩陣表示了int 類型的數(shù)組的數(shù)組被實(shí)現(xiàn)的過程。概念上,這個(gè)數(shù)組可以用圖3-1 來(lái)表示。下列程序從左到右,從上到下為數(shù)組的每個(gè)元素賦值,然后顯示數(shù)組的值。
// Demonstrate a two-dimensional array.
class TwoDArray {
public static void main(String args[]) {
int twoD[][]= new int[4][5];
int i, j, k = 0;
for(i=0; i<4; i++)
for(j=0; j<5; j++) {
twoD[j] = k;
k++;
}
for(i=0; i<4; i++) {
for(j=0; j<5; j++)
System.out.print(twoD[j] + " ");
System.out.println();
}
}
}
程序運(yùn)行的結(jié)果如下:
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
當(dāng)你給多維數(shù)組分配內(nèi)存時(shí),你只需指定第一個(gè)(最左邊)維數(shù)的內(nèi)存即可。你可以單獨(dú)地給余下的維數(shù)分配內(nèi)存。例如,下面的程序在數(shù)組twoD 被定義時(shí)給它的第一個(gè)維數(shù)分配內(nèi)存,對(duì)第二維則是手工分配地址。
int twoD[][] = new int[4][];
twoD[0] = new int[5];
twoD[1] = new int[5];
twoD[2] = new int[5];
twoD[3] = new int[5];
盡管在這種情形下單獨(dú)地給第二維分配內(nèi)存沒有什么優(yōu)點(diǎn),但在其他情形下就不同了。例如,當(dāng)你手工分配內(nèi)存時(shí),你不需要給每個(gè)維數(shù)相同數(shù)量的元素分配內(nèi)存。如前面所說,既然多維數(shù)組實(shí)際上是數(shù)組的數(shù)組,每個(gè)數(shù)組的維數(shù)在你的控制之下。例如,下列程序定義了一個(gè)二維數(shù)組,它的第二維的大小是不相等的。
// Manually allocate differing size second dimensions.
class TwoDAgain {
public static void main(String args[]) {
int twoD[][] = new int[4][];
twoD[0] = new int[1];
twoD[1] = new int[2];
twoD[2] = new int[3];
twoD[3] = new int[4];
int i, j, k = 0;
for(i=0; i<4; i++)
for(j=0; j twoD[j] = k;
k++;
}
for(i=0; i<4; i++) {for(j=0; j[j] + " ");System.out.println();}}}
該程序產(chǎn)生的輸出如下:
0 1 2 3 4 5 6 7 8 9
該程序定義的數(shù)組可以表示如下:
對(duì)于大多數(shù)應(yīng)用程序,我們不推薦使用不規(guī)則多維數(shù)組,因?yàn)樗鼈兊倪\(yùn)行與人們期望的相反。但是,不規(guī)則多維數(shù)組在某些情況下使用效率較高。例如,如果你需要一個(gè)很大的二維數(shù)組,而它僅僅被稀疏地占用(即其中一維的元素不是全被使用),這時(shí)不規(guī)則數(shù)組可能是一個(gè)完美的解決方案。
初始化多維數(shù)組是可能的。初始化多維數(shù)組只不過是把每一維的初始化列表用它自己的大括號(hào)括起來(lái)即可。下面的程序產(chǎn)生一個(gè)矩陣,該矩陣的每個(gè)元素包括數(shù)組下標(biāo)的行和列的積。同時(shí)注意在數(shù)組的初始化中你可以像用字面量一樣用表達(dá)式。
// Initialize a two-dimensional array.
class Matrix {
public static void main(String args[]) {
double m[][] = {
{ 0*0, 1*0, 2*0, 3*0 },
{ 0*1, 1*1, 2*1, 3*1 },
{ 0*2, 1*2, 2*2, 3*2 },
{ 0*3, 1*3, 2*3, 3*3 }};
int i, j;
for(i=0; i<4; i++) {
for(j=0; j<4; j++)
System.out.print(m[j] + " ");
System.out.println();
}
}
}
當(dāng)你運(yùn)行這個(gè)程序時(shí),你將得到下面的輸出:
0.0 0.0 0.0 0.0
0.0 1.0 2.0 3.0
0.0 2.0 4.0 6.0
0.0 3.0 6.0 9.0
正如你看到,數(shù)組中的每一行就像初始化表指定的那樣被初始化。讓我們?cè)倏匆粋€(gè)使用多維數(shù)組的例子。下面的程序首先產(chǎn)生一個(gè)3×4×5的3維數(shù)組,然后裝入用它的下標(biāo)之積生成的每個(gè)元素,最后顯示了該數(shù)組。
// Demonstrate a three-dimensional array.
class threeDMatrix {
public static void main(String args[]) {
int threeD[][][] = new int[3][4][5];
int i, j, k;
for(i=0; i<3; i++)
for(j=0; j<4; j++)
for(k=0; k<5; k++)
threeD[j][k] = i * j * k;
for(i=0; i<3; i++) {
for(j=0; j<4; j++) {
for(k=0; k<5; k++)
System.out.print(threeD[j][k] + " ");
System.out.println();
}
System.out.println();
}
}
}
該程序的輸出如下:
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 1 2 3 4
0 2 4 6 8
0 3 6 9 12
0 0 0 0 0
0 2 4 6 8
0 4 8 12 16
0 6 12 18 24
3 另一種數(shù)組聲明語(yǔ)法
聲明數(shù)組還有第二種格式:
type[ ] var-name;
這里,方括號(hào)緊跟在類型標(biāo)識(shí)符type 的后面,而不是跟在數(shù)組變量名的后面。例如,下面的兩個(gè)定義是等價(jià)的:
int al[] = new int[3];
int[] a2 = new int[3];
下面的兩個(gè)定義也是等價(jià)的:
char twod1[][] = new char[3][4];
char[][] twod2 = new char[3][4];
包含這種數(shù)組聲明格式主要是為了方便。
上述就是小編為大家分享的如何進(jìn)行java數(shù)組解析了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁(yè)標(biāo)題:如何進(jìn)行java數(shù)組解析
網(wǎng)站網(wǎng)址:http://www.chinadenli.net/article20/gccejo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、ChatGPT、建站公司、標(biāo)簽優(yōu)化、網(wǎng)站營(yíng)銷、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)