三大流程控制语句:顺序,选择,循环。
一.顺序控制语句
按照代码的先后顺序依次执行,程序中多数代码都是这样执行的。一个程序总的执行顺序也是这样的,先顺序执行,遇到选择和循环语句后,就按选择循环的规则执行,选择循环语句结束后继续按顺序执行。
二.选择控制语句
- if结构
if(条件){ 在该条件成立下执行的代码,否则不执行,直接跳过 } 例如: if(a>b){//如果a大于b,就输出a System.out.println(a); }
- if....else
if(条件){ //代码1 如果条件成立,就执行此处代码1,否者,执行else下的代码2 }else{ //代码2 } 例如: if(a>b){//如果a大于b,就输出a,反之输出b System.out.println(a); }else{ System.out.println(b); }
- 多重if结构
if(条件1){ }else if(条件2){ }else if(条件3){ }else{ } 例如常见的成绩判断 Scanner sc = new Scanner(System.in); int n = sc.nextInt();//从键盘输入成绩n,n为整数 if(n>90) { System.out.println("优秀"); }else if(n>80) { System.out.println("良好"); }else if (n>70) { System.out.println("中等"); }else if(n>60){ System.out.println("及格"); }else { System.out.println("不及格"); }
- 嵌套if结构
if(条件1){ if(条件2){ } } 例如 int x=5,y=6; if(x!=y) { if(x>y) { System.out.println("x>y"); }else { System.out.println("x<y"); } }else { System.out.println("x=y"); }
switch语句
switch(表达式){//表达式可以为byte,short,char,int,enum(枚举,jdk5.0引入),String(jdk7.0引入)
case 目标值1:代码;break;//break的作用是结束switch语句,使之不再向下执行
case 目标值2:代码;break;//如果不加break,程序就会一直向下执行,直到遇到break和执行到最后
case 目标值3:代码;break;//case后面的n的取值不能重复
case 目标4:代码;break;
......
default:代码;//n取其他值
}
//输出星期几的例子,应该是很常见的,大家可以去掉其中几个break试试输出会有什么不同
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();//从键盘输入成绩n,n为整数
switch (n) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期七");
break;
default:
System.out.println("输入错误");
}
三.循环控制语句
- while
while(循环条件){ //代码 } 满足循环条件就执行里面的代码 int n = 5; while(n>1){ System.out.println(n); n--; }
- do...while
do{ //代码 }while(循环条件) //和while循环类似,但是循环条件放在循环体的后面,这意味着循环体会无条件执行一次 //所以while循环可能一次都不执行,但do..while循环至少执行一次 //例如下边的代码,n=1不满足n>1的循环条件,但还是会输出1并且执行n-- int n=1; do{ System.out.prntln(n); n--; }while(n>1)
- for
for(初始化表达式;循环条件;操作表达式){ 循环体 } 执行顺序: for(a;b;c){ d } a->b->d->c->b->d->c->b->d->c.....直到不满足循环条件b
- 增强型for循环(也叫foreach循环)
格式
for(数据类型 变量名:遍历对象){
}
/*数据类型 变量名:声明一个变量用来接收遍历目标遍历后的元素,
一般为遍历对象的子类型,如遍历对象为数组,数组里面的数据为int类型,则循环里面的数据类型声明为int。*/
例如:
int[] arr = {1,5,2,7,4,8,9,10};
for(int n:arr) {
System.out.println(n);
}
注:1.增强for循环底层也是使用了迭代器获取的,只不过获取迭代器由jvm完成,不需要我们获取迭代器而已,所以在使用增强for循环遍历集合是不能对集合元素进行修改,遍历数组也同样如此
2.普通for循环可以没有遍历的目标,而增强for循环一定要有遍历的目标。