我們知道數組實際上是一種簡單的數據結構,它在計算機中是順序存儲的,而我們要使用數組,實際上就是要使用數組中的元素。
如:現在有一個數組:int[] a = {13,15,59,28};那么我們如何找到並使用59這個數字呢?
數組的下標:
數組的下標可以這樣理解:數組的下標實際上就是為數組里面的各個元素進行編號,這個編號是順序遞增進行的,我們可以把數組中的元素看成是正在排隊。
如上面的例子,13是數組中的第一個元素,15是第二個,59是第三個,28是第四個。於是,最容易讓人接受的編號就是1234這樣編號了,但是Java並不是這樣做的,Java是從0開始編號的,也就是說第一個元素的編號為0,第二個為1,以此類推。那么為什么Java要這樣做呢?原因如下:
比如上面的例子,數組a有4個元素,當程序執行的時候,Java會向內存去申請一段空間地址用來存儲這四個元素,而且這個空間結構是順序的連續結構,因為只有四個元素,所以這段空間只有四個房間,假如該空間的第一個房間的編號為1001,第二個為1002,第三個為1003,第四個為1004,但是,我們只知道:1.數組a去拿地址的時候它只能拿到這一段地址,而不是分成很多小房間的地址,也就是說,它只知道這段地址的第一個房間編號為1001;2.這段地址的數組空間有四個。
所以,Java是這么做的:
給第一個元素編號為0:a[0] --> 1001+0 = 1001; (13這個元素住第一個房間)
給第二個元素編號為1:a[1] --> 1001+1 = 1002; (15這個元素住第二個房間)
給第三個元素編號為2:a[2] --> 1001+2 = 1003; (59這個元素住第三個房間)
給第四個元素編號為3: a[3] --> 1001+3 = 1004; (28這個元素住第四個房間)
如果要獲取數組中的某一個元素,就用下標來獲取,比如59這個元素,我們知道它的下標為2,那就是這樣的:a[2],這樣就得到了第三個元素59。那如果想要獲取數組中的全部的元素呢?那就很簡單,用for循環語句把它們一一獲取出來就可以了。
示例:
/** * @author 劉小將 * 測試遍歷數組 */ public class UseArray{ public static void main(String[] args){ int[] a = new int[]{13,15,59,28}; //聲明一個int型的數組叫a,並初始化值 for(int i = 0;i < 4;i++){ System.out.println("下標為:"+i+","+"值為:"+a[i]); } } }
如上面的例子,for循環中的i<4,是因為我們先前知道a這個數組有四個元素,假如現在有一個數組,它的元素有多少個我們也不知道,我們怎么辦呢?這時候我們就要先獲取該數組的長度,再進行遍歷。
數組的長度:
在Java中要得到數組的長度是非常簡單的,不用自己再去寫多余的算法。
語法:數組名.lenght();
使用Java提供的方法,就可以直接獲取到該數組的長度了。
示例:
/** * @author 劉小將 * 測試數組的長度獲取 */ public class ArrayLenght{ public static void main(String[] args){ int[] a = new int[]{13,15,59,28}; //假如這是一個我們不知道長度大小的數組 for(int i = 0;i < a.lenght();i++){ //此處i的區間到底小於多少,我們也不知道,只有程序計算到這一塊時,才能計算出來 System.out.println("該數組的長度為:"+a.lenght()); System.out.println("數組元素下標為:"+i+","+"值為:"+a[i]); } } }
數組的索引起始於0,所以負索引在Java中是無效的。
如果嘗試用負索引/無效的索引訪問數組,會拋出:ArrayIndexOutOfBoundException異常。