控制语句

2016/09/27 Java

流程控制语句

流程控制语句分类

  • 顺序结构
    • 写在前面的先执行,写在后面的后执行
  • 选择结构(分支结构)
  • 循环结构

选择结构

  • if语句
  • switch语句

switch语句

  • 表达式的取值:byte,short,int,char
  • JDK5以后可以是枚举
  • JDK7以后可以是String

面试题

switch语句的表达式可以是byte吗?可以是long吗?可以是String吗?

可以,不可以,JDK7以后可以

case穿透

case穿透是指:switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。如果没有break语句,那么就会从表达式的值相匹配的case标签处开始执行,一直执行到switch语句的末尾,这种从其中的一个case处开始,忽略后面的值的匹配,直接运行case的内容的现象就是穿透的现象。

int x = 2;
int y = 3;
switch (x) {
    default:
        y++;
        break;
    case 3:
        y++;
    case 4:
        y++;
}
System.out.println("y=" + y);//4

int x = 2;
int y = 3;
switch (x) {
    case 1:
        y++;
    default:
        y++;
    case 3:
        y++;
    case 4:
        y++;
}
System.out.println("y=" + y);//6

合理使用case穿透

switch(month) {
	case 1:
	case 2:
	case 12:
		System.out.println("冬季");
		break;
	case 3:
	case 4:
	case 5:
		System.out.println("春季");
		break;
	case 6:
	case 7:
	case 8:
		System.out.println("夏季");
		break;
	case 9:
	case 10:
	case 11:
		System.out.println("秋季");
		break;
	default:
		System.out.println("你输入的月份有误");
}

循环结构

  • for循环
  • while循环
  • do while循环

循环语句的组成:

  • 初始化语句:
    • 一条或者多条语句,这些语句完成一些初始化操作。
  • 判断条件语句:
    • 这是一个boolean 表达式,这个表达式能决定是否执行循环体。
  • 循环体语句:
    • 这个部分是循环体语句,也就是我们要多次做的事情。
  • 控制条件语句:
    • 这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。

for循环

数组逆序

public static void reverse2(int[] arr) {
	for(int start=0,end=arr.length-1; start<=end; start++,end--) {
		int temp = arr[start];
		arr[start] = arr[end];
		arr[end] = temp;
	}
}

for循环和while循环的区别

  • 使用区别:
    • 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用;
      如果你想继续使用,就用while,否则推荐使用for;
      原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
  • 场景区别:
    • for循环适合针对一个范围判断进行操作
    • while循环适合判断次数不明确操作

跳转控制语句

  • break 中断
  • continue 继续
  • return 返回

跳出多层循环

带标签的语句:

格式:
	标签名: 语句
//在 switch 或 loop 外部中断
//break;

//跳出单层循环
for(int x=0; x<10; x++) {
	if(x == 3) {
		break;
	}
	System.out.println("HelloWorld");
}

System.out.println("over");
System.out.println("-------------");
//跳出多层循环
wc:for(int x=0; x<3; x++) {
	nc:for(int y=0; y<4; y++) {
		if(y == 2) {
			//continue nc;
			//continue nc;
			//break wc;
			break wc;
		}
		System.out.print("*");
	}
	System.out.println();
}

以上概念总结于传智播客Java基础课程

Search

    Post Directory