1. 數(shù)組的定義
相同類(lèi)型的數(shù)據(jù)的有序集合
int[ ] nums;
int nuts[ ];
兩種都可以,但是首選第一種
int[ ] nums; // 聲明一個(gè)數(shù)組
nums =new int[10]; // 分配一個(gè)10個(gè) int 類(lèi)型數(shù)字的空間,創(chuàng)建一個(gè)數(shù)組
也可以將聲明和創(chuàng)建數(shù)組簡(jiǎn)化為一行:
int[ ] nums =new int[15];
給數(shù)組元素賦值:
nums [?]=?;
2. 計(jì)算數(shù)組元素和
int sum =0;
for (int i =0; i < nums.length; i++) { ? //?nums.length 獲取數(shù)組長(zhǎng)度
sum = sum + nums[i];
}
System.out.println("總和為:"+ sum);
3. 內(nèi)存分析
內(nèi)存分析:
在聲明時(shí),在棧中壓入數(shù)組名(僅有數(shù)組名字,內(nèi)部為空)
在創(chuàng)建數(shù)組時(shí),在堆中開(kāi)辟了一個(gè)內(nèi)存,空間分成(數(shù)組大小)的份
在賦值時(shí),在堆中給每一份空間賦值
4. 三種初始化
靜態(tài)初始化
// 靜態(tài)初始化,除了用 new 定義,也可以直接定義,可以理解為結(jié)合了 創(chuàng)建 + 賦值 兩個(gè)步驟
int[ ] a = {0,1,2,3,6,9};// 放多少,空間就是多大,一旦定義,空間大小不可改變
動(dòng)態(tài)初始化
// 動(dòng)態(tài)初始化
int[] b =new int[10]; // 創(chuàng)建之后里面的默認(rèn)值為0
數(shù)組的默認(rèn)初始化
數(shù)組是引用類(lèi)型,他的元素相當(dāng)于類(lèi)的實(shí)例變量,因此數(shù)組一經(jīng)分配空間,其中的每個(gè)元素也被按照實(shí)例變量同樣的方式被隱式初始化
5. 數(shù)組的四個(gè)基本特點(diǎn)
1. 長(zhǎng)度確定,一旦被創(chuàng)建,就不可以改變
2. 元素必須是相同類(lèi)型,不能混合類(lèi)型
3. 元素可以是任何數(shù)據(jù)類(lèi)型,包括基本類(lèi)型和引用類(lèi)型
4. 數(shù)組變量屬于引用類(lèi)型,數(shù)組也可以看做是對(duì)象,數(shù)組中的每個(gè)元素相當(dāng)于鈣對(duì)象的成員變量。數(shù)組本身就是對(duì)象,Java 中對(duì)象是堆中的,因此數(shù)組無(wú)論保存原始類(lèi)型還是其他對(duì)象類(lèi)型,數(shù)組對(duì)象本身都是在堆中的。
6. 數(shù)組邊界
下標(biāo)的合法區(qū)間:【0,length-1】越界會(huì)報(bào)錯(cuò):ArrayIndexOutofBounds
7. 數(shù)組的使用
基本用法:
public static void main(String[ ] args) {
int[ ] array = {2,3,4,5,8};
// 打印全部的數(shù)組元素
? ? for (int i =0; i < array.length; i++) {
? ? System.out.println(array[i]);
? ? }
? ? System.out.println("===================================");
// 計(jì)算所有元素的和
? ? int sum =0;
? ? for (int i =0; i < array.length; i++) {
? ? sum += array[i];
? ? }
? ? System.out.println("sum="+sum);
? ? System.out.println("===================================");
// 查找最大元素
? ? int max = array[0];
? ? for (int i =1; i < array.length; i++) {
? ? if(array[i]>max){
? ? max = array[i];
? ? ? ? }
}
? ? System.out.println("max"+max);
}
高級(jí)用法:
// for each 循環(huán)
int[ ] array = {2,4,7,4,7};
for (int i : array) { // 輸入 ? ??數(shù)組名 . for ? ?然后點(diǎn)回車(chē)
System.out.println(i);// i 表示數(shù)組里面每一個(gè)值
}
特點(diǎn):沒(méi)有輸出,比較適合打印輸出,但是要是操作里面的元素,這種方式可能沒(méi)那么適合
// 數(shù)組做方法入?yún)?/b>
例如:打印數(shù)組元素的方法
public static void printArray(int[ ] arrays){
for (int array : arrays) {
System.out.print(array+" ");
? ? }
}
// 數(shù)組作返回值
例如:反轉(zhuǎn)數(shù)組
public static int[ ] ?reverse(int[] array){
int result[ ] =new int[array.length];
? ? for (int i =0, j = array.length-1; i < array.length; i++,j--) {
? ? result[j] = array[i];
? ? }
return result;
}
注意:返回的是數(shù)組,在 main 里用的時(shí)候要對(duì)其定義。
int[ ] reArray =reverse(array);
8. 多維數(shù)組
定義
int[ ][ ]array = {{1,2},{2,2},{5,6}};
1,2 array[0]
2,2 array[1]
5,6 array[2]
// 打印多維數(shù)組
for (int i =0; i < array.length; i++) {
for (int j =0; j< array[i].length; j++) {
System.out.println(array[i][j]);
? ? }
}