Java数组基础使用下标、遍历、存取与本质

Java数组

一、创建数组的格式

二、数组下标

三、存放数组元素

四、取出数组元素

五、二维数组等多维数组

\qquad 遍历二维数组

一、创建数组的格式:

  1. 数组所需要存储的数据类型[ ] 数组对象变量名 = new … 数据类型[length];
  • int[] arr = new int[10];// 定义了一个空间为10的 int型数组
  1. 数组所需要存储的数据类型[ ] 数组对象变量名 = {元素1,元素2,元素3};
  • String[] btnstrs={“原图”,”马赛克“};
1. 任何数组都只有一个属性:length(数组的长度,能够存储的元素个数)
2. 定义了数据类型的数组只能够存放当前数据类型的元素。

二、数组下标

下标:从数组的第一个空间开始,计数为0,依次递增,下标的最大值为: length-1

我们定义数组长度时指定了length,代表能够存放元素的个数,下标从0开始,代表第一个元素。

例如:int[] arr = new int[10];那么第一个元素就是arr[0],最后一个元素就是arr[length-1],也就是arr[9]

三、存放数组元素

存放数组元素:数组名[下标]=元素;

例如:arr[0] = 1; //将数组arr的第一个元素赋值1

要注意数组下标不要越界!

例如:

int[] arr = new int[10];
arr[10] = 1; //error! 10超出了数组的界限

由于arr[10]代表取数组第11个元素,而arr[]只有10个元素空间,因此会超出界限报错,这就是数组越界

数组越界可以是越上界,也可以是越下界,需要我们时刻注意

可以使用for循环遍历数组进行赋值:

for(int i=0; i < arr.length; i++){
    arr[i] =;
}

四、取出数组元素

取出数组元素

  1. 存储类型 变量名 = 数组名[下标];用于赋值

  2. 直接使用 数组名[下标]; 用于直接使用数组元素进行操作

例如:

int n=arr[0];把arr[0]代表的int值赋给n。

if(arr[0]==0){}把arr[0]代表的值直接用来判断

同样要注意如果要赋值,数据类型也要匹配。

五、二维数组等多维数组

二维数组:数组所需要存储的数据类型[][] 数组对象变量名 = new … 数据类型[length1][length2];

首先明确一个概念:任何维度的数组都是一维的

那么二维数组本身就不存在,本质也是一维数组

下面我们拿int[][]系列作为范例说明


  1. []表示数组标识

  2. int[] 表示一种引用数据类型

  3. (数据类型)[]表示数组,所以我们再加一个[] (int[])[],这就是上面我们的二维数组int[][]

  4. 我们可以看出,对当前数组来说,[]是唯一的

  5. 所以我们可以推至三维数组:((int[])[])[] -> int[][][]

下面我们针对二维数组来举例:

int[][] arr2 = new int[10][8];
  1. 长度为10的数组,每个元素又是一个长度为8的数组

  2. 直接取到int值

    • arr2[第几个元素][中的第几个元素];
  3. 单独取一个元素(一个一维数组)

    • arr2[第几个一维数组下标]
int[][] arr2 = new int[10][8];
// 从二维数组中 取出一个单个一维数组
int[] arr_2_9 = arr2[9];
// 操作单个一维数组
arr_2_9[0]=500;

遍历二维数组

就像遍历一维数组那样,只不过我们的for循环变成了两层,先遍历总共的一维数组个数length1,再分别遍历每个一维数组元素个数length2

for(int i=0;i<10;i++){// 当作每次取出一个一维数组
    for(int j=0;j<8;j++){// 把每个一维数组里循环从头到尾操作
        int num = arr2[i][j];
    }
}

我们还可以使用单层for循环,使用取余取模操作对数组进行遍历,原理是一样的

for (int i = 0; i < arr2.length*arr2[0].length;i++) {
    int num1= arr2[i/8][i%8]; //这里的8就对应上面的arr2[0].length,原理是每当遍历完一个一维数组,
                                i/8会自动+1,而i%8会自动变为0,这样即可达到类似二维for循环的效果
    System.out.print(num1+" ");
}
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neko1145

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值