1,for循环
1.1 for执行顺序
for(表达式1;表达式2;表达式3){
}
先执行表达式1–>然后执行表达式2,如果为false,结束循环,否则执行循环体–>执行表达式3
1.2 foreach循环
for(Object item : ObjectList){
}
1.3 循环效率比较
JDK5 之后,遍历方式:ForEach、迭代器、for循环。
直接for循环效率最高,其次是迭代器和 ForEach操作。
对于集合,ArrayList手写的循环比增强型for循环更快,其他的集合没有这种情况。因此默认情况下使用增强型for循环,而遍历ArrayList使用传统的循环方式。
作为语法糖,其实 ForEach 编译成 字节码之后,使用的是迭代器实现的,反编译后,testForEach方法如下:
public static void testForEach(List list) {
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Object t = iterator.next();
Object obj = t;
}
}
//可以看到,只比迭代器遍历多了生成中间变量这一步,因为性能也略微下降了一些。
2,while循环
2.1 while执行顺序
while(表达式1){
表达式2;
}
每次循环,先执行表达式1,再执行表达式2.
2.2 do-while执行顺序
do{
表达式1;
}while(表达式2);
每次循环,先执行表达式1,再执行表达式2.
3,循环中断语句
1)return
2)break
- 多层循环也只能跳出当前循环。
3)continue
- 多层循环也只能跳出当前循环。
4)标签
//这个标签可以随便定义
lable_class:
for (int i = 1;i < 4;i++) {
for (int j = 1;j < 11;j++) {
System.out.println("aaa");
break lable_class;
}
}
}
- 标签可以随便定义
break 标签
,直接跳出多层循环。继续循环后的程序。
lable_class:
for (int i = 1; i < 4; i++) {
System.out.println("aaa" + i);
for (int j = 1; j < 11; j++) {
System.out.println("bbb" + j);
continue lable_class;
}
}
System.out.println("ccc");
输出结果:
aaa1
bbb1
ccc
continue 标签
,直接进行标签处的下一次循环
lable_class:
for (int i = 1; i < 4; i++) {
System.out.println("aaa" + i);
for (int j = 1; j < 11; j++) {
System.out.println("bbb" + j);
continue lable_class;
}
}
System.out.println("ccc");
输出结果:
aaa1
bbb1
aaa2
bbb1
aaa3
bbb1
ccc
4,switch
switch(m){
case 1:break;
case 2:break;
default:
}
- case后一定添加break,否则会继续执行后续case;
- 支持类型:
byte、short、char、int (Java 5以前);
enum枚举类型(Java5);
字符串(String)(Java 7)。
长整型(long)在目前所有的版本中都是不可以的。