break和continue的区别以及增强for循环详解
2017-11-03 15:37
471 查看
1.for循环
for循环是更加简洁的循环语句,大部分情况下,for循环可以代替while循环、do-while循环。for循环的格式为:
for( 初始语句 ; 执行条件 ; 增量 )
{
循环体
}
执行顺序:1、初始语句 2、执行条件是否符合? 3、循环体 4、增加增量
初始化语句只在循环开始前执行一次,每次执行循环体时要先判断是否符合条件,如果循环条件还会true,则执行循环体,在执行迭代语句。
所以对于for循环,循环条件总比循环体多执行一次。
注意:for循环的循环体和迭代语句不在一起(while和do-while是在一起的)所以如果使用continue来结束本次循
环,迭代语句还有继续运行,而while和do-while的迭代部分是不运行的。
来个例子:输入一个数n(n>1),输出n!的值。n!(n的阶层)=1*2*3*……*n
[cpp] view
plain copy
#include<stdio.h>
void main()
{
long num=1;
int n,i;
printf("请输入n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
num=num*i;
printf("%d的阶层是%d\n",n,num);
}
1.增强for循环和iterator遍历的效果是一样的,也就说
增强for循环的内部也就是调用iteratoer实现的(可以查看编译后的文件),但是增强for循环 有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。
2.ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。
3.而对于 LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用 增强for循环,也就是iterator。
通过一个DEMO来理解:
[java] view
plain copy
import java.lang.*;
import java.util.*;
/*
增强for循环的用法:
语法:
1、for(type 变量名 : 集合变量名){ ... }
2、for(;true;){ ... } 这是一个for的死循环
注意事项:
迭代变量必须在()中定义!
集合变量可以是数组或实现了Iterable类的接口类。
*/
public class StrongFor
{
public static void main(String[] args)
{
ArrayList<String> list = new ArrayList<String>();
list.add("01");
list.add("02");
list.add("03");
list.add("04");
int a[] = {1,20,3,8,9};
for(String s : list)
{
System.out.print(s+" ");
}
System.out.println();
for(int i : a)
{
System.out.print(i+" ");
}
System.out.println();
}
}
[java] view
plain copy
优点还体现在泛型 假如 set中存放的是Object
Set<Object> set = new HashSet<Object>();
for循环遍历:
for (Object obj: set) {
if(obj instanceof Integer){
int aa= (Integer)obj;
}else if(obj instanceof String){
String aa = (String)obj
}
........
}
如果你用Iterator遍历,那就晕了
map list 也一样
唯一的缺点就是 在遍历 集合过程中,不能对集合本身进行操作
for (String str : set) {
set.remove(str);//错误!
}
2.break和continue的区别和作用
break和continue都是用来控制循环结构的,主要是停止循环。1.break
有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止。
这是我们可以使用break来完成。break用于完全结束一个循环,跳出循环体执行循环后面的语句。
2.continue
continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。
可以理解为continue是跳过当次循环中剩下的语句,执行下一次循环。
例子:
[cpp] view
plain copy
#include<stdio.h>
void main()
{
int sum,i;
sum=0;
for(i=1;i<=100;i++)
{
sum=sum+i;
if(i==2)
{
printf("执行continue");
continue;
}
if(i==4)
{
printf("执行break");
break;
}
printf("sum=%d",sum);
}
printf("循环结束");
}
这个的运行结果为: sum=1;
执行continue;
sum=6;
执行break 循环结束
运行结束。
相关文章推荐
- 关于break和continue以及label的区别和作用(详解)
- Java迭代器(转)(iterator详解以及和for循环的区别)
- 解析PHP跳出循环的方法以及continue、break、exit的区别介绍
- break,continue,goto,return语句区别详解
- for循环的简介及break和continue的区别
- break continue 区别 以及实例
- java中break和continue的区别详解(附源码)
- break,continue,goto,return区别详解
- 解析PHP跳出循环的方法以及continue、break、exit的区别介绍
- Java迭代器(转)(iterator详解以及和for循环的区别)
- 深入c语言continue和break的区别详解
- 关于break,continue,goto,return语句区别详解(所有语言通用的语法知识)
- iterator详解以及和for循环的区别
- 关于break,continue,goto,return语句区别详解
- break 和continue以及return的区别
- Java迭代器(iterator详解以及和for循环的区别)
- break和continue以及return的区别
- Java迭代器(iterator详解以及和for循环的区别)
- 解析PHP跳出循环的方法以及continue、break、exit的区别介绍
- 跳出for循环,break和continue的区别