Java数组中你可能不知道的

本来打算温习一下注解方面的内容作为今天的推送,但是来不及写了,那就一起来看一下数组,数组是用来存放一组具有相同类型数据的数据结构,通过下标来访问数组中的元素。

数组的定义

数组的定义主要有两种,一种是先指定数组的大小,然后根据数组元素下标进行赋值,另一种是直接创建一个数组并进行赋值,具体如下:

1//1.定义大小为10的数组

2int[] arrayA =newint[10];

3intarrayB[] =newint[10];

4arrayA[] =1;

5arrayB[1] =2;

6//2.定义数组并赋值

7int[] arrayC = {1,2,3,4,5};

数组本质

Java 中的数组实际上是一个类,因此两个数组变量可以指向同一个数组,观察如下代码:

显然,执行上述代码结果肯定是 2,上述代码中,将数组 arrayD 的值指向 arrayE,其本质是两个数组 arrayD、arrayE指向了同一块数组空间,当修改了 arrayD 中某一元素的值,相应的 arrayE 中对应元素值也发生了变化,具体如下图所示:

注意:当数组作为方法的参数传递时,相当于传递的是数组的引用,因此在方法中对数组的操作也会影响到原来的数组,这一点非常重要。

数组的复制

为了得到两个数组元素的每个值都相同的元素,我们可以使用 Java 提供的 arraycopy() 来实现,具体如下:

显然,上述代码执行完数组 arrayF 的值为 1、1、1,如果间接修改了数组 arrayD 中数组元素的值,则完数组 arrayF 的值为 2、1、1,这是结合上下文获得的结果。

下面顺便说一下 arraycopy 方法参数的含义,具体如下:

1/**

2* 复制数组

3*@paramsrc:原数组

4*@paramsrcPos:原数组开始被复制的位置

5*@paramdest:目标数组

6*@paramdestPos:目标数组开始的位置

7*@paramlength:目标数组的长度

8*/

9publicstaticvoidarraycopy(Object src,

10intsrcPos,

11Object dest,

12intdestPos,

13intlength) {

14}

数组中好像要注意的东西也就这么多了,当然还有其他关于操作数组的 API ,上面遇到数组之间的赋值影响了原来数组的值,这也是之前自己没有注意到的,今天就写这么多。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180422G069E300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券