网站首页 > java教程 正文
难度
初级
学习时间
30分钟
适合人群
零基础
开发语言
Java
开发环境
- JDK v11
- IntelliJ IDEA v2018.3
1.遍历数组
需求:
定义一个数组,数组元素是数字1-5,请显示输出“第1个数字是1”以此类推。
思路:
- 定义一个int类型的数组。
- 因为已经知道要存储的元素,所以使用大括号{}初始化数组。
- 取出每一个元素,用int类型变量接收,然后进行显示输出。
实现:
结果:
从运行结果来看,正确无误。
但是大家有没有发现一个问题,如果我要存储1-100的数字,然后取出每一个元素进行显示输出呢?那不得定义100个变量来接收这100个元素?1万个呢?这种写法肯定是有问题的。
如果有一种方式能逐个逐个的取出来,然后进行显示输出就好了。唉?这种方式像不像循环?我循环取出每一个元素,数组下标不是从0开始的吗?我就从0开始累加,一直累加到数组的最大下标为止。我认为这种方式挺好的。
下面就为大家介绍数组的一个朋友,叫“遍历”,也叫“迭代”。它们的意思就是循环取出数组内每一个元素。用到的工具就是循环语句。
2.for循环遍历数组
我们先来看看for循环格式:
for循环由初始化表达式、条件表达式、步进表达式和循环体组成。
需求:
将数字1-5存入数组中,然后取出每一个元素进行显示输出,显示输出格式是“第x个元素是:x”。
思路:
- 定义一个int类型的数组。
- 因为已经知道数组里面存储的元素是什么,所以使用大括号{}初始化数组。
- 因为要取出每一个元素进行显示输出,所以使用for循环逐个取出。
- 初始化表达式负责定义一个计数器,用来记录当前要取出的元素下标。
- 条件表达式负责判断计数器小于数组长度,因为下标超过的话就会发生数组下标越界异常。
- 步进表达式负责累加计数器。
- 循环体负责根据当前计数器来取数组中的元素,然后进行显示输出。
实现:
结果:
运行过程:
循环第一遍,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”。
思路:
- 定义一个int类型的数组。
- 因为已经知道数组里面存储的元素是什么,所以使用大括号{}初始化数组。
- 因为要取出每一个元素进行显示输出,所以使用while循环逐个取出。
- 初始化表达式负责定义一个计数器,用来记录当前要取出的元素下标。因为while循环和for循环结构的不同,所以初始化表达式要放在while循环之前做。
- 条件表达式负责判断计数器小于数组长度,因为下标超过的话就会发生数组下标越界异常。
- 步进表达式负责累加计数器。因为while循环和for循环结构的不同,所以步进表达式要放在while循环体中做。
- 循环体负责根据当前计数器来取数组中的元素,然后进行显示输出。
实现:
结果:
注意:
累加计数器这个动作要放在循环的最后。因为计数器原始值需要参与运算,不能先累加计数器原始值,然后再参与运算。比如计数器最开始的原始值是0,然后进入循环体,突然被累加了,本来是要取数组下标为0的元素,结果取成下标为1的元素。那么下标为0的元素永远都无法取到,所以将累加计数器操作放置循环体最后。
4.do-while遍历数组
我们先来看看do-while循环格式:
do-while循环由条件表达式和循环体组成。do-while与while循环的不同是,do-while会先执行一次循环体,然后再判断条件表达式进行下一次循环。
do-while循环和for循环不同的是,它没有初始化表达式和步进表达式,所以我们需要将初始化表达式放在循环之前做,步进表达式放在循环中去做。
需求:
将数字1-5存入数组中,然后取出每一个元素进行显示输出,显示输出格式是“第x个元素是:x”。
思路:
- 定义一个int类型的数组。
- 因为已经知道数组里面存储的元素是什么,所以使用大括号{}初始化数组。
- 因为要取出每一个元素进行显示输出,所以使用while循环逐个取出。
- 初始化表达式负责定义一个计数器,用来记录当前要取出的元素下标。因为do-while循环和for循环结构的不同,所以初始化表达式要放在do-while循环之前做。
- 条件表达式负责判断计数器小于数组长度,因为下标超过的话就会发生数组下标越界异常。
- 步进表达式负责累加计数器。因为do-while循环和for循环结构的不同,所以步进表达式要放在do-while循环中做。
- 循环体负责根据当前计数器来取数组中的元素,然后进行显示输出。
实现:
结果:
注意:
不推荐使用do-while遍历数组。
原因:
假如数组中有没有元素,我们却执行了循环体里面的内容,从而造成程序异常,这种做法是不正确的。再者,我们给一个超过数组最大下标的时候,也会造成程序异常,因为它不经过条件表达式判断。所以,请大家不要使用do-while遍历数组。
数组基础知识总结:
- 数组是一系列相同类型的序列。
- 数组的定义方式一:数据类型 标识符[]
- 数组的定义方式二:数据类型[] 标识符
- 数组的初始化方式一:数据类型[] 标识符 = {元素1,元素2......}
- 数组的初始化方式二:数据类型[] 标识符 = new 数据类型[长度];
- 数组的初始化必须指定长度。
- 数组的长度通过length成员获取。
- 数组的最大下标 = 数组的长度 - 1。
- 数组下标越界异常是ArrayIndexOutOfBoundsException。下标的取值范围在0-最大下标之间,请勿越界。
本章总结
- 数组的遍历也叫数组的迭代。
- 数组的遍历就是按数组下标逐个取出数组中的元素。
- 数组遍历的方式有三种:for循环、while循环和do-while循环。
- 强烈推荐使用for循环遍历数组。
- 不推荐使用do-while循环遍历数组。
至此,Java中数组详解相关内容讲解先告一段落,更多内容请持续关注。
答疑
如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。
上一章
下一章
“全栈2019”Java第三十章:数组详解(下篇)
学习小组
加入同步学习小组,共同交流与进步。
- 方式一:关注头条号gorhaf,私信“Java学习小组”。
- 方式二:关注公众号gorhaf,回复“Java学习小组”。
全栈工程师学习计划
关注我们,加入“全栈工程师学习计划”。
版权声明
原创不易,未经允许不得转载!
猜你喜欢
- 2024-10-23 运维--shell 中数组的操作(shell中数组如何定义)
- 2024-10-23 C/C++编程笔记:C 语言字符数组的定义与初始化,讲解到位
- 2024-10-23 Java SE之——数组 基础篇(java入门数组基础educoder)
- 2024-10-23 初识Java—(十)数组(1)(初识java)
- 2024-10-23 巧用C语言中数组部分元素初始化(c语言数组全部初始化为0)
- 2024-10-23 C语言数组算法实现_初始化(c语音数组初始化)
- 2024-10-23 北大学霸!手抄万字Java数组笔记,2小时吃透,你确定不拿走?
- 2024-10-23 C语言中的数组:声明、初始化和操作
- 2024-10-23 「C语言」初始化数组,C语言中初始化特定列表和元素
- 2024-10-23 C语言一维数组,如何初始化?有哪些方式?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)