专业的JAVA编程教程与资源

网站首页 > java教程 正文

“全栈2019”Java第二十九章:数组详解(中篇)

temp10 2024-10-23 15:04:44 java教程 13 ℃ 0 评论

难度

初级

学习时间

30分钟

“全栈2019”Java第二十九章:数组详解(中篇)

适合人群

零基础

开发语言

Java

开发环境

  • JDK v11
  • IntelliJ IDEA v2018.3

1.遍历数组

需求:

定义一个数组,数组元素是数字1-5,请显示输出“第1个数字是1”以此类推。

思路:

  1. 定义一个int类型的数组。
  2. 因为已经知道要存储的元素,所以使用大括号{}初始化数组。
  3. 取出每一个元素,用int类型变量接收,然后进行显示输出。

实现:

结果:

从运行结果来看,正确无误。

但是大家有没有发现一个问题,如果我要存储1-100的数字,然后取出每一个元素进行显示输出呢?那不得定义100个变量来接收这100个元素?1万个呢?这种写法肯定是有问题的。

如果有一种方式能逐个逐个的取出来,然后进行显示输出就好了。唉?这种方式像不像循环?我循环取出每一个元素,数组下标不是从0开始的吗?我就从0开始累加,一直累加到数组的最大下标为止。我认为这种方式挺好的。

下面就为大家介绍数组的一个朋友,叫“遍历”,也叫“迭代”。它们的意思就是循环取出数组内每一个元素。用到的工具就是循环语句。

2.for循环遍历数组

我们先来看看for循环格式:

for循环由初始化表达式、条件表达式、步进表达式和循环体组成。

需求:

将数字1-5存入数组中,然后取出每一个元素进行显示输出,显示输出格式是“第x个元素是:x”。

思路:

  1. 定义一个int类型的数组。
  2. 因为已经知道数组里面存储的元素是什么,所以使用大括号{}初始化数组。
  3. 因为要取出每一个元素进行显示输出,所以使用for循环逐个取出。
  4. 初始化表达式负责定义一个计数器,用来记录当前要取出的元素下标。
  5. 条件表达式负责判断计数器小于数组长度,因为下标超过的话就会发生数组下标越界异常。
  6. 步进表达式负责累加计数器。
  7. 循环体负责根据当前计数器来取数组中的元素,然后进行显示输出。

实现:

结果:

运行过程:

循环第一遍,i = 0,i < 5 => true,number = numbers[0] => number = 1,i++ => i = 1;

循环第二遍,i = 1,i < 5 => true,number = numbers[1] => number = 2,i++ => i = 2;

循环第三遍,i = 2,i < 5 => true,number = numbers[2] => number = 3,i++ => i = 3;

循环第四遍,i = 3,i < 5 => true,number = numbers[3] => number = 4,i++ => i = 4;

循环第五遍,i = 4,i < 5 => true,number = numbers[4] => number = 5,i++ => i = 5;

循环第六遍,i = 5,i < 5 => false,循环终止。

注意:

强烈推荐使用for循环遍历数组。

3.while循环遍历数组

我们先来看看while循环格式:

while循环由条件表达式和循环体组成。

while循环和for循环不同的是,它没有初始化表达式和步进表达式,所以我们需要将初始化表达式放在循环之前做,步进表达式放在循环中去做。

需求:

将数字1-5存入数组中,然后取出每一个元素进行显示输出,显示输出格式是“第x个元素是:x”。

思路:

  1. 定义一个int类型的数组。
  2. 因为已经知道数组里面存储的元素是什么,所以使用大括号{}初始化数组。
  3. 因为要取出每一个元素进行显示输出,所以使用while循环逐个取出。
  4. 初始化表达式负责定义一个计数器,用来记录当前要取出的元素下标。因为while循环和for循环结构的不同,所以初始化表达式要放在while循环之前做。
  5. 条件表达式负责判断计数器小于数组长度,因为下标超过的话就会发生数组下标越界异常。
  6. 步进表达式负责累加计数器。因为while循环和for循环结构的不同,所以步进表达式要放在while循环体中做。
  7. 循环体负责根据当前计数器来取数组中的元素,然后进行显示输出。

实现:

结果:

注意:

累加计数器这个动作要放在循环的最后。因为计数器原始值需要参与运算,不能先累加计数器原始值,然后再参与运算。比如计数器最开始的原始值是0,然后进入循环体,突然被累加了,本来是要取数组下标为0的元素,结果取成下标为1的元素。那么下标为0的元素永远都无法取到,所以将累加计数器操作放置循环体最后。

4.do-while遍历数组

我们先来看看do-while循环格式:

do-while循环由条件表达式和循环体组成。do-while与while循环的不同是,do-while会先执行一次循环体,然后再判断条件表达式进行下一次循环。

do-while循环和for循环不同的是,它没有初始化表达式和步进表达式,所以我们需要将初始化表达式放在循环之前做,步进表达式放在循环中去做。

需求:

将数字1-5存入数组中,然后取出每一个元素进行显示输出,显示输出格式是“第x个元素是:x”。

思路:

  1. 定义一个int类型的数组。
  2. 因为已经知道数组里面存储的元素是什么,所以使用大括号{}初始化数组。
  3. 因为要取出每一个元素进行显示输出,所以使用while循环逐个取出。
  4. 初始化表达式负责定义一个计数器,用来记录当前要取出的元素下标。因为do-while循环和for循环结构的不同,所以初始化表达式要放在do-while循环之前做。
  5. 条件表达式负责判断计数器小于数组长度,因为下标超过的话就会发生数组下标越界异常。
  6. 步进表达式负责累加计数器。因为do-while循环和for循环结构的不同,所以步进表达式要放在do-while循环中做。
  7. 循环体负责根据当前计数器来取数组中的元素,然后进行显示输出。

实现:

结果:

注意:

不推荐使用do-while遍历数组。

原因:

假如数组中有没有元素,我们却执行了循环体里面的内容,从而造成程序异常,这种做法是不正确的。再者,我们给一个超过数组最大下标的时候,也会造成程序异常,因为它不经过条件表达式判断。所以,请大家不要使用do-while遍历数组。

数组基础知识总结:

  • 数组是一系列相同类型的序列。
  • 数组的定义方式一:数据类型 标识符[]
  • 数组的定义方式二:数据类型[] 标识符
  • 数组的初始化方式一:数据类型[] 标识符 = {元素1,元素2......}
  • 数组的初始化方式二:数据类型[] 标识符 = new 数据类型[长度];
  • 数组的初始化必须指定长度。
  • 数组的长度通过length成员获取。
  • 数组的最大下标 = 数组的长度 - 1。
  • 数组下标越界异常是ArrayIndexOutOfBoundsException。下标的取值范围在0-最大下标之间,请勿越界。

本章总结

  • 数组的遍历也叫数组的迭代。
  • 数组的遍历就是按数组下标逐个取出数组中的元素。
  • 数组遍历的方式有三种:for循环、while循环和do-while循环。
  • 强烈推荐使用for循环遍历数组。
  • 不推荐使用do-while循环遍历数组。

至此,Java中数组详解相关内容讲解先告一段落,更多内容请持续关注。

答疑

如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。

上一章

“全栈2019”Java第二十八章:数组详解(上篇)

下一章

“全栈2019”Java第三十章:数组详解(下篇)

学习小组

加入同步学习小组,共同交流与进步。

  • 方式一:关注头条号gorhaf,私信“Java学习小组”。
  • 方式二:关注公众号gorhaf,回复“Java学习小组”。

全栈工程师学习计划

关注我们,加入“全栈工程师学习计划”。

版权声明

原创不易,未经允许不得转载!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表