数组的下标与长度

Posted joyfulcode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组的下标与长度相关的知识,希望对你有一定的参考价值。

  我们知道数组实际上是一种简单的数据结构,它在计算机中是顺序存储的,而我们要使用数组,实际上就是要使用数组中的元素。

如:现在有一个数组: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异常。

 

 

以上是关于数组的下标与长度的主要内容,如果未能解决你的问题,请参考以下文章

数组函数

java.io.ByteArrayInputStream

perl数组的长度与元素个数

Go切片实现

keil5数组下标异常

5.数组