美文网首页
程序员面试题——Java中数组的基本概念

程序员面试题——Java中数组的基本概念

作者: G小曲 | 来源:发表于2018-11-21 14:38 被阅读0次

    程序员面试题——Java中数组的基本概念

    本文将通过四个例题来讲解Java中有关数组的基本知识,供读者学习和复习:

    例1. 正确的数组定义是(    )。

    A.intintArray [][] = new int [10,10];

    B.intintArray [10][10] = new int[][];

    C.intintArray [][] = new int [ ][10];

    D.int[]intArray [] = new int[10][];

    【答  案】D

    【解  析】以二维数组为例,二维数组的定义格式如下:

    type arrayName[ ][ ];

    这个形式还可以有如下的变形:

    type[ ] arrayName [ ];

    type[ ][ ] arrayName;

    对二维数组进行动态初始化时,有两种分配内存空间的方法。

    第一种方法为直接为每一维分配空间,如:

    type arrayName[ ][ ] =new type[arraylength1][arraylength2]

    第二种方法中,多维数组可以从最高维起(而且必须从最高维开始),分别为每一维分配内存。创建二维数组的一般格式为:

    type arrayN[ ][ ] = newtype [ arrleng1 ][ ];

    arrayN [0] = new type[arrleng2];

    arrayN [1] = new type[arrleng2];

    ......

    arrayN [arrleng1 - 1] =new type [arrleng2];

    该说明创建的数组第一维大小是arrleng1,第二维大小为arrleng2。它创建的是一个矩阵数组,即第二维的大小一致。当然也可以创建第二维大小不一致的数组。例如:

    int twoDim[ ][ ] = newint [ 4 ][ ];

    twoDim[0] = new int[2];

    twoDim[1] = new int[4];

    twoDim[2] = new int[6];

    twoDim[3] = new int[8];

    twoDim数组为4行,每行的元素个数分别为2,4,6,8个,各不相同。数组形式如下:

    X X

    X X X X

    X X X X X X

    X X X X X X X X

     该数组各维的长度分别是:

    twoDim.length = 4

    twoDim[0].length = 2

    twoDim[1].length = 4

    twoDim[2].length = 6

    twoDim[3].length = 8

    选项A中,等号右侧维数的说明格式是错误的,应该修改为new int [10][10]。

    选项B中,属于静态数组说明方式。但在Java语言中不允许静态说明数组。也就是说,等号左侧不能出现各维的大小。

    选项C中,说明各维大小的次序是错误的。多维数组说明中,如果不是将所有的维数都说明的话,应该依从高到低的次序依次来说明。

    选项D是正确的。

     例2. 下列说明是否正确?请解释。

    int elements[] = newint[6];

    elements = new int[10];

    【答  案】正确。第一行说明了一维整型数组elements,它含有6个元素。第二行实际上是将数组引用指向了一个新的数组,含有10个整型数组。

    【解  析】数组创建后就不能改变它的大小,但是可以使用同一个引用变量指向一个全新的数组。实际上,第一个数组实际上丢失了,除非还有其他的引用指向它。

     例3. 执行下列程序后,数组hold的内容是什么?请解释。

    class ArrayTest

    {   publicstatic voidmain(String args[])

    {   int elements[] = { 1, 2, 3, 4, 5, 6 };

    int hold[] = {10, 9, 8,7, 6, 5, 4, 3, 2, 1 };

    System.arraycopy(elements,0, hold, 0, elements.length);

    }

    }

    【答  案】数组hold的内容为:1,2,3,4,5,6,4,3,2,1。

    【解  析】Java在System类中提供了一个特殊的方法arraycopy(),它实现数组之间的拷贝。

    elements是一个含6个int型数的数组,hold含有10个int型数。最后一个可执行语句(arraycopy方法)是将elements中第1个(下标为0)到第elements.length个元素依次放到hold中下标从0开始的各位置,即第1个到第6个位置。执行完毕,数组hold的内容为:1,2,3,4,5,6,4,3,2,1。

    在本例中,数组elements和hold作为方法arraycopy的参数使用。当数组作为函数参数时,是将数组引用传给方法,函数中对数组内容的任何改变都将影响至函数外。

    例4. 设数组ages的说明为:int ages[4][7],则ages.length的值是()。

    A.4

    B.7

    C.28

    D.不确定

    【答  案】A

    【解  析】在Java中,数组下标从0开始,数组中的元素个数length是数组类中唯一的数据成员变量。使用new创建数组时系统自动给length赋值。数组一旦创建完毕,其大小就固定下来。

    与一维数组的长度不同,多维数组的length属性只返回第一维的长度。所以ages.length的值是4,而不是28或7。

    相关文章

      网友评论

          本文标题:程序员面试题——Java中数组的基本概念

          本文链接:https://www.haomeiwen.com/subject/ebhcqqtx.html