网站首页 > java教程 正文
循环
老生常谈的一个控制流程了,我们在是使用数组和集合的时候,遍历元素的时候经常会用到循环的结构,Java具有非常灵活的三种循环机制:
根据是否知道循环的次数可以为分为while循环,do…while循环和for循环,下面我们单独来了解一下:
while循环
当我们不知道循环的具体次数时,可以使用while循环进行操作,下面是while循环的伪代码
定义初始变量
while (控制条件) {
循环体
}
代码示例:
// 定义控制循环变量
int start = 0;
// 循环条件
while (start < 2) {
// 循环体
System.out.println("1");
// 改变控制循环变量
start++;
}
}
do…while循环
和while循环类似,do…while循环同样适用于不知道循环具体的次数时,但是和while循环不太一样的是,如果控制循环的变量初始时就不符合循环条件,那么循环体一次也不会执行,而do…while循环至少会把循环体执行一次。
定义初始变量
do {
循环体
} while (循环条件);
代码示例:
// 定义控制循环变量
int start = 0;
do {
// 循环体
System.out.println("1");
// 控制循环变量
start++;
// 循环条件
} while(start < 0);
for循环
下面进入了我们的重头戏,日常中使用的最多的for循环,由于普通for循环可以准确的控制循环的次数,所以一般当我们在需要手动控制循环次数的时候,我们会使用普通for循环
for(定义初始变量;判断条件;变量变化){
循环体
}
这里的流程图和while是类似的,下面我们来看一下如何遍历一个数组:
int[] a = {1,2,3,4};
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
同样的遍历一个集合也可以使用普通for循环:
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
这里细心的同学可能已经注意到了,我们这里描述的时候一直使用的是普通for循环,那么既然有普通的for循环,就一定有不普通的for循环,下面我们来看一下两种不太普通的for循环
增强for循环
在JDK 5之后,出现了一种语法糖–forEach循环,也称之为增强for循环,循环语法如下
for(数据类型 定义元素名:循环列表) {
循环体
}
foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。 foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。
关于增强for循环和普通for循环的效率问题
数组遍历:增强型for循环和普通循环遍历原理相同,效率相同。
集合遍历:增强型for循环的遍历其本质就是迭代器 iterator的遍历,和普通循环遍历相比,各自有自己适用的场景,比如说普通for循环比较适合List类(数组类)遍历通过下标查找数据的,而增强型for循环则比较适合链表结构的集合的遍历。
在数据量较大的情况下,如果是集合使用增强for循环的效率会低于使用普通for循环。
跳出循环的两个关键字
我们在使用的过程中,如果遇到需要中断一个流程的情况,通常会使用到以下两个关键字:break和continue。
break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。break 跳出最里层的循环,并且继续执行该循环下面的语句。当然我们也可以使用标签的方式来跳出某个指定的循环。
read_data:
while(...) {
for(...) {
break read_data; //这里就是直接跳出了while循环
}
}
continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。在 for 循环中,continue 语句使程序立即跳转到更新语句。在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。当然,continue也有一种带标签的形式,将跳到与标签匹配的循环首部。用法和break一样,这里就不再举例说明。
- 上一篇: Java小白入门教程(6)——循环语句
- 下一篇: 好程序员Java培训分享For循环详解
猜你喜欢
- 2024-11-03 详细总结Java for循环的那些坑(java的for循环中是如何执行的)
- 2024-11-03 11.Java中的 while 循环(java的for循环语句)
- 2024-11-03 传说级大佬总结的几道Java循环练习题(适合新人)
- 2024-11-03 java中的while循环(javado while循环)
- 2024-11-03 Java流程控制语句之循环结构--初学者适用
- 2024-11-03 What?Java循环还能嵌套循环,说好的禁止套娃呢!「第12集」
- 2024-11-03 Golang for 循环(golangfor循环特性改变)
- 2024-11-03 JavaScript for 循环(javascriptfor循环数字累加)
- 2024-11-03 java循环的这4种遍历方式,有些16K的程序员可能是懵逼的
- 2024-11-03 用了那么久的 Java For 循环,你知道哪种方式效率最高吗?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)