數(shù)組:
數(shù)組可以看成是多個(gè)相同類型數(shù)據(jù)的組合實(shí)現(xiàn)對這些數(shù)據(jù)的統(tǒng)一和管理數(shù)組里存儲的每一個(gè)數(shù)據(jù)叫元素
元素的數(shù)據(jù)類型在數(shù)組被聲明創(chuàng)建時(shí)確定
元素的數(shù)據(jù)類型必須統(tǒng)一,一旦創(chuàng)建不能更改,其它數(shù)據(jù)類型的元素不可以裝進(jìn)數(shù)組,數(shù)組中元素的個(gè)數(shù),稱為數(shù)組長度。(length)
java中聲明數(shù)組時(shí),不能指定長度
數(shù)組的聲明
數(shù)組類型[]數(shù)組名;
數(shù)組的創(chuàng)建(初始化)
new數(shù)組類型[數(shù)組的長度];(索引從0開始最大編號是數(shù)組長度-1)
int[]arr;定義一個(gè)int型的數(shù)組數(shù)組名是arr
int arr[];定義一個(gè)int型的變量,變量名是arr數(shù)組
int[] wher = {1,3,10};
int[] wher = new int []{5,1,0,4};
for(int i= 1 ;i<wher.length;i++){}//獲取數(shù)組元素個(gè)數(shù)(遍歷數(shù)組)
整形默認(rèn)為0、String默認(rèn)為null、char默認(rèn)為‘0’
浮點(diǎn)默認(rèn)為0.0、Boolean默認(rèn)為false
遍歷數(shù)組:依次訪問數(shù)組中的元素
增強(qiáng)for循環(huán)
for(int x:wher){system.out.println(x)}
for(數(shù)組類型 臨時(shí)變量:要遍歷的數(shù)組){}
初始化:
就是為數(shù)組開辟內(nèi)存空間,并為數(shù)組中的每個(gè)元素賦予初始值。
靜態(tài)初始化:給出初始值,由系統(tǒng)決定長度
動態(tài)初始化:只給出長度,有系統(tǒng)給出初始值
數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長度];
java中的內(nèi)存分配
棧(存儲的是局部變量)
堆(存儲的是new出來的東西)實(shí)體(對象)
方法區(qū)(面向?qū)ο筮M(jìn)階講)
本地方法區(qū)(和系統(tǒng)相關(guān))
寄存器(給CPU使用)
堆:
A:每一個(gè)對象都有地址值
B:每一個(gè)對象的數(shù)據(jù)都有默認(rèn)值
整形默認(rèn)為0、String默認(rèn)為null、char默認(rèn)為‘0’
浮點(diǎn)默認(rèn)為0.0、Boolean默認(rèn)為false
棧:
存儲的是局部變量,局部變量就是定義在方法中的變量使用完畢,立即回收
Array IndexOutOfBoundsException:數(shù)據(jù)索引越界異常
產(chǎn)生原因:我們訪問了不存在的索引
NullPointerException:空指針異常
產(chǎn)生原因:數(shù)組已經(jīng)不在指向?qū)?nèi)存的數(shù)據(jù)了,還使用數(shù)組名去訪問
數(shù)組獲取最值得思路:
A:先拿數(shù)組中一個(gè)元素作為參照物
B:遍歷數(shù)組讓后面所有的元素依次和參照物進(jìn)行比較
C:整個(gè)循環(huán)遍歷比較結(jié)束,留下來的就是最值
二維數(shù)組:其實(shí)就是元素為一維數(shù)組的數(shù)組
定義格式:
A:數(shù)組類型[][] 數(shù)組名;(推薦)
B:數(shù)據(jù)類型 數(shù)組名[][];
C:數(shù)據(jù)類型[] 數(shù)組名[];
初始化:
A:動態(tài)初始化
數(shù)據(jù)類型[][] 數(shù)組名 = new 數(shù)據(jù)類型[M][N];
M表示的是二維數(shù)組中一維數(shù)組的個(gè)數(shù)
N表示的是一維數(shù)組中的元素個(gè)數(shù)
B:靜態(tài)初始化
數(shù)據(jù)類型[][] 數(shù)組名 = new 數(shù)據(jù)類型[][]{{元素},{},{}……}
簡化:
數(shù)據(jù)類型[][] 數(shù)組名 = {{元素},{元素},……};
二維數(shù)組名配合索引可以獲取到每一個(gè)一維數(shù)組,每一個(gè)一維數(shù)組配合索引名可以獲取到數(shù)組中的元素;
system.out.println();換行輸出
systrm.out.print();不換行輸出
int[][] arr = new int [3][4];
for(int p = 0;p<arr.length;p++){
for(int q = 0;p<arr[p].length;q++){
system.out.println(arr[p][q]);}}
數(shù)組的復(fù)制
system.arraycopy(src,srcpos,dest,destpos,length);
system.arraycopy(原數(shù)組,原起始位,目標(biāo)數(shù)組,目標(biāo)起始位,長度);