Java 控制语句

控制语句的类型:

  选择语句  :  if  语句  switch 语句

  循环语句  :for  循环   while 循环     do...while 循环 

  转向语句  : break   continue   return

选择语句/分支语句

  if语句的写法格式是

    if (布尔表达式) {             

    }

    if(布尔表达式){

    }else{

    }

if(布尔表达式1){ // 分支1
  java语句;
}else if(布尔表达式2){ // 分支2
  java语句;
}else if(布尔表达式3){
  java语句;
}else if(布尔表达式4){
  java语句;
}....

以上if语句的执行原理?

先判断“布尔表达式1”,如果“布尔表达式1”为true,则执行分支1,然后if语句结束了。
当“布尔表达式1”结果是false,那么会继续判断布尔表达式2的结果,如果布尔表达式2的结果是true,则执行分支2,然后整个if就结束了。

从上往下依次判断,主要看第一个true发生在哪个分支上。第一个true对应的分支执行,只要一个分支执行,整个if结束。

第四种写法:
if(布尔表达式1){ // 分支1
  java语句;
}else if(布尔表达式2){ // 分支2
  java语句;
}else if(布尔表达式3){
  java语句;
}else if(布尔表达式4){
  java语句;
}else{
  java语句; // 以上条件没有一个成立的。这个else就执行了。
}

 注意:

  1、对于if语句来说,在任何情况下只能有1个分支执行,不可能存在2个或者更多个分支执行。if语句中只要有1个分支执行了,整个if语句就结束了。(对于1个完整的if语句来说的。)

  2、以上4种语法机制中,凡是带有else分支的,一定可以保证会有一个分支执行。以上4种当中,第一种和第三种没有else分支,

    这样的语句可能会导致最后一个分支都不执行。第二种和第四种肯定会有1个分支执行。

  3、当分支当中“java语句;”只有1条,那么大括号{}可以省略,但为了可读性,最好不要省略。(有的程序员在编写代码的时候,可能会故意将大括号{}省略,你能看懂就行。)

  4、控制语句和控制语句之间是可以嵌套的,但是嵌套的时候大家最好 一个语句一个语句进行分析,不要冗杂在一起分析。

  switch 语句

    语句格式

switch(值){

  case 值1:
    java语句;
    java语句;...
    break;
  case 值2:
    java语句;
    java语句;...
    break;
  case 值3:
    java语句;
    java语句;...
    break;
  default:
    java语句;
  }

   1、break;语句不是必须的。default分支也不是必须的

      2、switch语句支持的值有哪些? 支持int类型以及String类型。

      3、switch语句的执行原理

拿“值”与“值1”进行比较,如果相同,则执行该分支中的java语句,然后遇到"break;"语句,switch语句就结束了。

如果“值”与“值1”不相等,会继续拿“值”与“值2”进行比较,如果相同,则执行该分支中的java语句,然后遇到break;语句,switch结束。

注意:如果分支执行了,但是分支最后没有“break;”,此时会发生case穿透现象。case 可以合并

所有的case都没有匹配成功,那么最后default分支会执行。

      

    
 1 import java.util.*;
 2 
 3 public class ControlStatements {
 4     public  static void main(String[] args) {
 5         Scanner i = new Scanner(System.in);
 6         System.out.println("请输入数字");
 7         int j = i.nextInt();
 8         
 9         switch (j) {
10         case 1 : case 2    :
11             System.out.println("j =" + "1");
12         case 3    :
13             System.out.println("j =" + "3");
14             break;
15         case 4    :
16             System.out.println("j =" + "4");
17             break;
18         }        
19     }
20 }
21 
22 运行结果
23 
24 请输入数字
25 1
26 j =1
27 j =3
View Code

 

循环语句

  for 循环

    语法机制:

      for(初始化表达式 ; 条件表达式 ; 更新表达式){

      } 

    注意:
      第一:初始化表达式最先执行,并且在整个循环中只执行一次。
      第二:条件表达式结果必须是一个布尔类型,也就是:true或false

    执行原理:

先执行初始化表达式,并且初始化表达式只执行1次。
然后判断条件表达式的结果,如果条件表达式结果为true,则执行循环体。
循环体结束之后,执行更新表达式。

更新完之后,再判断条件表达式的结果,如果还是true,继续执行循环体。

  直到更新表达式执行结束之后,再次判断条件时,条件为false,for循环终止。

    
 1 public class ForTest02{
 2     public static void main(String[] args){
 3         // 最简练的for循环怎么写?
 4         // 初始化表达式、条件表达式、更新表达式 其实都不是必须的!!!
 5         /*
 6         for(;;){
 7             System.out.println("死循环");
 8         }
 9         */
10 
11         // 最常见的for循环
12         // 循环10次,输出0~9
13         /*
14             i = 0
15             i = 1
16             i = 2
17             i = 3
18             i = 4
19             i = 5
20             i = 6
21             i = 7
22             i = 8
23             i = 9
24 
25             强调一下:对于以下的这个for循环,其中int i = 0;
26             最先执行,并且只执行一次,而且i变量属于for循环
27             的局部变量,for循环结束之后i的内存就释放了。
28             这个i变量只能在for循环中使用。
29             这个i变量属于for循环域。在main方法中没有办法直接使用。
30         */
31         for(int i = 0;i < 10;i++){
32             System.out.println("i = " + i); // 0 1 2 3....9
33         }
34 
35         //错误: 找不到符号
36         //System.out.println(i);
37 
38         // i变量的作用域就扩大了。
39         int i = 0;
40         for(;i < 10;i++){
41             System.out.println("i --> " + i); // 0 1 2 3....9
42         }
43         System.out.println("这里的i可以访问吗?i = " + i); // 10
44 
45         // 变形
46         for(int k = 1; k <= 10; k++){
47             System.out.println("k --> " + k); // 1 2 ..... 9 10
48         }
49 
50         // 变形
51         for(int k = 1; k <= 10; ){
52             System.out.println("k --> " + k); 
53             k++;
54         }
55 
56         // 变形
57         for(int k = 1; k <= 10; ){
58             k++;
59             System.out.println("value --> " + k); // 2 3 4 5 6 7 8 9 10 11
60         }
61 
62     }
63 }
View Code

  

  while 循环  

语法机制:
  while(布尔表达式){
    循环体;
  }
执行原理:
  判断布尔表达式的结果,如果为true就执行循环体,循环体结束之后,再次判断布尔表达式的结果,如果还是true,继续执行循环体,直到布尔表达式结果为false,while循环结束。

do ... while  循环

  语法机制:

do {
  循环体;
}while(布尔表达式);

注意:do..while循环最后的时候别漏掉“分号”

执行原理:

  先执行循环体当中的代码,执行一次循环体之后,判断布尔表达式的结果,如果为true,则继续执行循环体,如果为false循环结束。


对于do..while循环来说,循环体至少执行1次。循环体的执行次数是:1~n次。
对于while循环来说,循环体执行次数是:0~n次。

转向语句

  break 语句

1、break;语句可以用在哪里呢?
  用在两个地方,其它位置不行
  第一个位置:switch语句当中,用来终止switch语句的执行。
    用在switch语句当中,防止case穿透现象,用来终止switch。

  第二个位置:break;语句用在循环语句当中,用来终止循环的执行。
    用在for当中
    用在while当中
    用在do....while..当中。

  2、break;语句的执行并不会让整个方法结束,break;语句主要是用来终止离它最近的那个循环语句。

continue;语句:终止当前"本次"循环,直接进入下一次循环继续执行。

1、continue翻译为:继续
2、continue语句和break语句要对比着学习
3、continue语句的作用是:

posted @ 2020-08-28 20:37  一叶扁舟,乘风破浪  阅读(183)  评论(0编辑  收藏  举报