流程控制语句

1.For循环与ForEach循环

For循环和ForEach循环的作用大概相似,特别是在遍历集合的时候,但是他们有些不同的地方,第一个不同就是当你需要索引的时候,foreach不能告诉你当前是第几个元素,要么就得自己定义自增变量,这时候使用for循环好一些,第二个不同是foreach循环在遍历的时候效率高一些,如下:
final int length = 100;
		int[] ints = new int[length];
		
		for(int i = 0;i < length;i++){
			ints[i] = i;
		}
		long start = System.currentTimeMillis();
		for(int i = 0;i < length;i++){
			System.out.print(ints[i]);
		}
		long mid = System.currentTimeMillis();
		for(int i : ints){
			System.out.print(i);
		}
		long end = System.currentTimeMillis();
		System.out.println("\nfor循环所用时间是:" + (mid - start));
		System.out.println("foreach循环所用时间是:" + (end - mid));
for循环所用时间是:15
foreach循环所用时间是:0
但是效率高也不是莫须有的效率高,foreach循环内不能改变正在循环的对象的内容,比如:
length = 2;
		int[] ints0 = new int[length];

		for (int i = 0; i < length; i++) {
			ints0[i] = i;
		}
		System.out.println("for循环改变之前是[" + ints0[0] + ","+ ints0[1] + "]");
		for (int i = 0; i < length; i++) {
			ints0[i]=100;
		}
		System.out.println("for循环改变之后是[" + ints0[0] + ","+ ints0[1] + "]");
		for (int i = 0; i < length; i++) {
			ints0[i] = i;
		}
		System.out.println("foreach循环改变之前是[" + ints0[0] + ","+ ints0[1] + "]");
		for (int i : ints) {
			i=100;
		}
		System.out.println("foreach循环改变之后是[" + ints0[0] + ","+ ints0[1] + "]");

for循环改变之前是[0,1]
for循环改变之后是[100,100]
foreach循环改变之前是[0,1]
foreach循环改变之后是[0,1]

2.break和continue

提到for循环就不得不提break和continue,break是完全退出循环,不再执行,continue是停止本次循环,继续下一次循环,这二个都可以结合标签使用:
                outer:
		for(int i = 0;i < 3;i++){
			for(int j = 0;j < 10;j++){
				System.out.print(j + " ");
				if(j == 5){
					continue outer;
				}
			}
		}
		System.out.println();
		outer0:
			for(int i = 0;i < 3;i++){
				for(int j = 0;j < 10;j++){
					System.out.print(j + " ");
					if(j == 5){
						break outer0;
					}
				}
			}

0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 
0 1 2 3 4 5 
另外就是标签的名字是可以重复的:
outer0:
			//不能再for和标签之间添加代码
			//System.out.println("");
			for(int i = 0;i < 3;i++){
				for(int j = 0;j < 10;j++){
					System.out.print(j + " ");
					if(j == 5){
						break outer0;
					}
				}
			}
		
		outer0:
			//不能再for和标签之间添加代码
			//System.out.println("");
			for(int i = 0;i < 3;i++){
				for(int j = 0;j < 10;j++){
					System.out.print(j + " ");
					if(j == 5){
						break outer0;
					}
				}
			}

3.switch语句


int a = 0;
		switch (a) {
		case 0:
			System.out.println("0");
			break;
		case 1:
			System.out.println("1");
			break;
		case 2:
			System.out.println("2");
		case 3:
			System.out.println("3");
		default:
			System.out.println("4");
		}

		
		a = 2;
		switch (a) {
		case 0:
			System.out.println("0");
			break;
		case 1:
			System.out.println("1");
			break;
		case 2:
			System.out.println("2");
		case 3:
			System.out.println("3");
		default:
			System.out.println("4");
		}

0
2
3
4
switch的jdk1.6只支持int或者char类型short这种的变量的判断,但是jdk7就增加了String类型,还有就是要注意break的使用。







相关内容:
前言
对象和类型
操作符和引用
流程控制语句
初始化和清理
访问控制
组合和继承
接口和多态
接口与抽象类
容器
异常
类型信息
泛型
数组
IO系统
枚举类型
注解
多线程
总结