數組的下標與長度


  

  我們知道數組實際上是一種簡單的數據結構,它在計算機中是順序存儲的,而我們要使用數組,實際上就是要使用數組中的元素。

  如:現在有一個數組: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異常。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM