您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)怎么在Java中使用數(shù)組,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
如果說現(xiàn)在要求你定義100個整型變量,那么如果按照之前的做法,可能現(xiàn)在定義的的結(jié)構(gòu)如下:
int i1, i2, i3, ... i100;
但是這個時候如果按照此類方式定義就會非常麻煩,因為這些變量彼此之間沒有任何的關(guān)聯(lián),也就是說如果現(xiàn)在突然再有一個要求,要求你輸出這100個變量的內(nèi)容,意味著你要編寫System.out.println()語句100次。
其實所謂的數(shù)組指的就是一組相關(guān)類型的變量集合,并且這些變量可以按照統(tǒng)一的方式進(jìn)行操作。數(shù)組本身屬于引用數(shù)據(jù)類型,那么既然是引用數(shù)據(jù)類型,這里面實際又會牽扯到內(nèi)存分配,而數(shù)組的定義語法有如下兩類。
數(shù)組動態(tài)初始化:
聲明并開辟數(shù)組:
數(shù)據(jù)類型 [] 數(shù)組名稱 = new 數(shù)據(jù)類型[長度];
數(shù)據(jù)類型 [] 數(shù)組名稱 = new 數(shù)據(jù)類型[長度];
分布進(jìn)行數(shù)組空間開辟(實例化)
| Tables | Are |
| ------------- |:-------------?
| 聲明數(shù)組: | 數(shù)組類型 數(shù)組名稱[] = null; | | | 數(shù)組類型 [] 數(shù)組名稱 =null; | | 開辟數(shù)組空間: | 數(shù)組名稱 =new` 數(shù)組類型[長度]; |
那么當(dāng)數(shù)組開辟空間之后,就可以采用如下的方式的操作:
數(shù)組的訪問通過索引完成,即:“數(shù)組名稱[索引]”,但是需要注意的是,數(shù)組的索引從0開始,所以索引的范圍就是0 ~ 數(shù)組長度-1,例如開辟了3個空間的數(shù)組,所以可以使用的索引是:0,1,2,如果此時訪問的時候超過了數(shù)組的索引范圍,會產(chǎn)生java.lang.ArrayIndexOutOfBoundsException 異常信息;
當(dāng)我們數(shù)組采用動態(tài)初始化開辟空間后,數(shù)組里面的每一個元素都是該數(shù)組對應(yīng)數(shù)據(jù)類型的默認(rèn)值;
數(shù)組本身是一個有序的集合操作,所以對于數(shù)組的內(nèi)容操作往往會采用循環(huán)的模式完成,數(shù)組是一個有限的數(shù)據(jù)集合,所以應(yīng)該使用 for 循環(huán)。
在 Java 中提供有一種動態(tài)取得數(shù)組長度的方式:數(shù)組名稱.length;
范例: 定義一個int型數(shù)組
public class ArrayDemo { public static void main(String args[]) { int data[] = new int[3]; /*開辟了一個長度為3的數(shù)組*/ data[0] = 10; // 第一個元素 data[1] = 20; // 第二個元素 data[2] = 30; // 第三個元素 for(int x = 0; x < data.length; x++) { System.out.println(data[x]); //通過循環(huán)控制索引 } } }
數(shù)組本身除了聲明并開辟空間之外還有另外一種開辟模式。
范例: 采用分步的模式開辟數(shù)組空間
public class ArrayDemo { public static void main(String args[]) { int data[] = null; data = new int[3]; /*開辟了一個長度為3的數(shù)組*/ data[0] = 10; // 第一個元素 data[1] = 20; // 第二個元素 data[2] = 30; // 第三個元素 for(int x = 0; x < data.length; x++) { System.out.println(data[x]); //通過循環(huán)控制索引 } } }
但是千萬要記住,數(shù)組屬于引用數(shù)據(jù)類型,所以在數(shù)組使用之前一定要開辟控件(實例化),如果使用了沒有開辟空間的數(shù)組,則一定會出現(xiàn) NullPointerException 異常信息:
public class ArrayDemo { public static void main(String args[]) { int data[] = null; System.out.println(data[x]); } }
這一原則和之前講解的對象是完全相同的。
數(shù)組在開發(fā)之中一定會使用,但是像上面的操作很少。在以后的實際開發(fā)之中,會更多的使用數(shù)組概念,而直接使用,99%情況下都只是做一個 for 循環(huán)輸出。
既然數(shù)組屬于引用數(shù)據(jù)類型,那么也一定可以發(fā)生引用傳遞。在這之前首先來研究一下數(shù)組的空間開辟。
范例: 觀察一道程序
public class ArrayDemo { public static void main(String args[]) { int data[] = null; data = new int[3]; //開辟一個長度為3的數(shù)組 data[0] = 10; data[1] = 20; data[2] = 30; } }
那么既然說到了引用數(shù)據(jù)類型了,就一定可以發(fā)生引用傳遞,而現(xiàn)在的引用傳遞的本質(zhì)也一定是:同一塊堆內(nèi)存空間可以被不同的棧內(nèi)存所指向。
范例: 定義一個程序
public class ArrayDemo { public static void main(String args[]) { int data[] = null; data = new int[3]; //開辟一個長度為3的數(shù)組 int temp[] = null; //聲明對象 data[0] = 10; data[1] = 20; data[2] = 30; temp = data; //int temp[] = data; temp[0] = 99; for(int i = 0; i < temp.length; i++) { System.out.println(data[i]); } } }
引用傳遞分析都是一個套路。同一塊堆內(nèi)存被不同的棧內(nèi)存所指向。
在之前所進(jìn)行的數(shù)組定義都有一個明顯特點:數(shù)組先開辟內(nèi)存空間,而后再使用索引進(jìn)行內(nèi)容的設(shè)置,實際上這種做法都叫做動態(tài)初始化,而如果希望數(shù)組在定義的時候可以同時出現(xiàn)設(shè)置內(nèi)容,那么就可以采用靜態(tài)初始化完成。
數(shù)組的靜態(tài)初始化一共分為以下兩種類型:
Tables | Are |
---|---|
簡化格式: | 數(shù)據(jù)類型 數(shù)組名稱 = {值, 值,…} |
完整格式: | 數(shù)據(jù)類型 數(shù)組名稱 = new 數(shù)據(jù)類型[] {值, 值,…} |
范例: 采用靜態(tài)初始化定義數(shù)組
public class ArrayDemo { public static void main(String args[]) { int data[] = {1, 2, 4, 545, 11, 32, 13131, 4444}; for(int i = 0; i < data.length; i++) { System.out.println(data[i]); } } }
在開發(fā)之中,對于靜態(tài)數(shù)組的初始化強(qiáng)烈建議使用完整語法模式,這樣可以輕松地使用匿名數(shù)組這一概念。
public class ArrayDemo { public static void main(String args[]) { System.out.println(new int[] {1, 2, 4, 545, 11, 32, 13131, 4444}.length); } }
以后使用靜態(tài)方式定義數(shù)組的時候一定要寫上完整格式。
數(shù)組最大的缺陷:長度固定。
在之前所使用的數(shù)組發(fā)現(xiàn)只需要一個索引就可以進(jìn)行訪問,那么這樣的數(shù)組實際上非常像一個數(shù)據(jù)行的概念。
索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
內(nèi)容 | 12 | 23 | 44 | 56 | 90 | 445 | 49 | 99 | 1010 |
現(xiàn)在痛過一個索引就可以取得唯一的一個記錄。所以這樣的數(shù)組可以簡單理解為一維數(shù)組,而二維數(shù)組本質(zhì)上指的是行列集合,也如果要確定某一個數(shù)據(jù)需要行索引和列索引來進(jìn)行定位。
索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
0 | 12 | 23 | 44 | 56 | 90 | 445 | 49 | 99 | 1010 |
1 | 2 | 3 | 41 | 56 | 9 | 45 | 49 | 99 | 10 |
如果要想確定一個數(shù)據(jù)則數(shù)據(jù)使用的結(jié)構(gòu)是“數(shù)組名稱[行索引][列索引]”,所以這樣的結(jié)構(gòu)就是一個表的結(jié)構(gòu)。
那么對二維數(shù)組的定義有兩種聲明形式:
數(shù)組的動態(tài)初始化:數(shù)據(jù)類型 對象數(shù)組[][] = new 數(shù)據(jù)類型[行個數(shù)][列個數(shù)];
數(shù)組的靜態(tài)初始化:數(shù)據(jù)類型 對象數(shù)組[][] = new 數(shù)據(jù)類型[行個數(shù)][列個數(shù)]{{值, 值,…}, {值, 值,…},…};
數(shù)組的數(shù)組就是二維數(shù)組。
范例: 定義一個二維數(shù)組
public class ArrayDemo { public static void main(String args[]) { //此時的數(shù)組并不是一個等列數(shù)組 int data[][] = new int[][] { {1, 2, 3}, {4, 5}, {6, 7, 8, 9}}; //如果在進(jìn)行輸出的時候一定要使用雙重循環(huán), //外部的循環(huán)控制輸出的行數(shù),而內(nèi)部的循環(huán)控制輸出列數(shù) for(int i = 0; i < data.length; i++) { for(int j = 0; j < data[i].length; j++) { System.out.print("data[" + i + "][" + j + "]=" + data[i][j] + "、"); } System.out.println(); } } }
由于輸出麻煩,所以可以忽略了,在進(jìn)行開發(fā)之中,出現(xiàn)二位數(shù)組的幾率并不高。
以上就是怎么在Java中使用數(shù)組,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。