Chapter4_控制执行流程

总结java中所有的与流程控制有关的知识

(1)表达式判断

  Java中只允许true或者false来作为判断条件,不允许用0或者非0值作为判断条件。

(2)if-else

  与流程密切相关的语句,决定了语句应该往哪个方向发展,与代码的逻辑结构密切相关。

(3)迭代

  下面的语句被划分为迭代语句。

  (A)while/do-while

    两者的唯一区别就是do-while中的语句至少会被执行一次,即是表达式里面的值一开始计算就是false。但对于while,如果第一次计算的结果是false,则循环体里的语句不会执行。

  (B)for

    for循环中要注意的首先是,初始化表达式,布尔表达式,步进运算都可以为空。另外一个就是for循环是Java中唯一用到了逗号操作符的地方,在控制表达式的三个部分中,可以使用一系列由逗号分隔的语句,并且这些语句会独立执行。在一个控制表达式中,定义多个变量的能力只限于for循环使用。

  (C)foreach语法

    foreach语法不必要创建int变量去对由访问项构成的序列进行计数。例如如下的几个例子。

    分开输出一个字符串中的所有字符:

 1 public class test {
 2     public static void main(String[] args){
 3         String s = "don‘t look back in anger";
 4         for(char c : s.toCharArray())
 5             System.out.print(c + " ");
 6     }
 7 }
 8
 9 output:
10 d o n ‘ t   l o o k   b a c k   i n   a n g e r 

    foreach语法不仅能够节省时间,更重要的是能够努力说明你正在做的事情,比如把数组中的每一个元素都获取出来。

(4)return

  return语句指明你希望在何处让方法返回或者退出,或返回一个什么样的值。

(5)break和continue

  break退出当前的迭代,continue退出当前这一次迭代然后开始进行下一次迭代。

(6)goto与标签

  在Java中,实际上没有goto语句的支持,但是Java中有类似的机制存在,即标签。在Java中,标签唯一起作用的地方是在迭代语句之前,这句话的内涵在于,在标签和迭代语句之间插入任何语句都是不合适的。几种label的行为机制如下。

1 label1:
2 outer-iteration{
3     inner-iteration{
4         break;    (1)
5         continue;    (2)
6         continue label1;    (3)
7         break label1;    (4)
8     }
9 }

  在(1)中,break中断内部迭代,回到外部迭代。(2)中,continue中断当前内部迭代,继续进行当前内部迭代。(3)中,continue中断当前迭代,重新从label1处进入外部迭代。(4)中,break中断所有迭代,并且不再进入外部迭代。下面是一个label用于for循环的例子。

 1 public class test {
 2     public static void main(String[] args){
 3         int i = 0;
 4         outer:
 5             for(;true;)
 6                 inner:
 7                     for(;i < 10; i++){
 8                         System.out.println("i = " + i);
 9                         if(i == 2){
10                             System.out.println("continue");
11                             continue;
12                         }
13                         if(i == 3){
14                             System.out.println("break");
15                             i++;
16                             break;
17                         }
18                         if(i == 7){
19                             System.out.println("continue outer");
20                             i++;
21                             continue outer;
22                         }
23                         if(i == 8){
24                             System.out.println("break outer");
25                             break outer;
26                         }
27                         for(int k = 0;k < 5; k++){
28                             if(k == 3){
29                                 System.out.println("continue inner");
30                                 continue inner;
31                             }
32                         }
33                     }
34     }
35 }

  这个例子中一个有趣的地方是,如果将15行的i++注释掉的话,程序会陷入死循环。这告诉我们在for循环体中,循环中的代码执行完后的最后一句才是步进操作,如果在之前用break语句退出循环,步进操作不会执行。细心的话可以发现在11行的continue之前并没有手动给i进行步进,但是步进操作还是进行了,这说明单个的continue在进行下一次内层循环的同时仍然可以进行自增操作。但是21行的continue加标签的上一句,需要手动给i进行步进,这是因为这种continue的形式不会继续进行循环体中的步进操作了,而是直接跳转到标签代码处。

  规则总结为:

  (1)单个的continue会终止当前循环并且回到内层循环的头部重新开始(步进,判断等操作仍然会执行)。

  (2)continue后跟标签会无条件跳转至标签处。

  (3)单个的break会终止并且跳出当前循环(只能跳出内层)。

  (4)break加标签可以中断并跳出标签所指的循环。

(7)switch

  switch更多的时候被划分为一种选择语句,根据整数表达式的值,switch语句可以从一系列代码中选择一段执行。

  switch的标准格式如下:

1 switch(integral-selector){
2     case integral-value1 : statement : break;
3     case integral-value2 : statement : break;
4     case integral-value3 : statement : break;
5     case integral-value4 : statement : break;
6     case integral-value5 : statement : break;
7     default: statement;
8 }

  其中,integral-selector称作整数选择因子,是一个能够产生整数值的表达式,switch语句将这个值与每一个integral-value比较,如果发现相等的,就选择执行,否则就执行再default里面的语句。每个case都以一个break结尾,如果有这个break存在,程序会在结束时跳出switch结构体,反之会继续进行,直到遇到一个break为止。switch是一个实现多路选择的有利工具,但是只能使用char或者int这样的整数值,但是与enum相联系可以减弱这种限制。

  下面是一个使用switch的例子。 

 1 public class test {
 2     public static void main(String[] args){
 3         String s = "though nothing can keep us together";
 4         for(char c : s.toCharArray()){
 5             switch(c){
 6                 case ‘a‘:
 7                 case ‘e‘:
 8                 case ‘i‘:
 9                 case ‘o‘:
10                 case ‘u‘:System.out.println(c + " is vowel");
11                          break;
12                 default:System.out.println(c + " is not vowel");
13             }
14         }
15     }
16 }

  多个case可以重叠在一起,形成多重匹配,只要符合那些条件中的一种,就会执行那一段代码。

时间: 2024-10-29 19:06:04

Chapter4_控制执行流程的相关文章

java控制执行流程--thinking in java学习

常用的控制执行流程有if-else:迭代while,do-while,for,foreach:return;break,continue;和break,continue配合使用的标签:switch:在过thinking in java这章的过程中,有两个地方又重新认识了一下,来和大家分享.1.return 有两个作用,1.设定一个方法的返回值:2.退出当前方法.因此任何方法都可以使用return语句,在void方法中使用return便是使用return的退出当前方法的作用.而且在返回void的方

Thinking In Java笔记(第四章 控制执行流程)

第四章 控制执行流程 Java中使用了C的所有流程控制语句.在Java中涉及的关键字包括if-else,while,do-while,for,return,break,continue以及选择语句switch.然而Java不支持goto语句(该语句引起了许多的反对意见),但是Java仍然可以类似goto那样跳转. 4.1 True和False 所有的条件语句都利用条件表达式的真假来决定执行的路径.Java中不允许我们将一个数字作为boolean值使用,虽然C和C++中是允许的("非零"

《汇编语言》-- 控制执行流程

参考文献: <汇编语言程序设计> ............................................................................................................................................................................................... 控制执行流程学习,程序中遇到无条件分支时,指令指针自动跳转到另一个位置,可以使用

Java编程思想---第四章 控制执行流程

第四章  控制执行流程 就像有知觉的生物一样,城西必须在执行过程中控制它的世界并作出选择,在Java中,你要使用执行控制语句来作出选择. 4.1 true和false 所有的条件语句都利用条件表达式的真假来决定执行路径.如a==b,它用操作符==来判断a的值是否等于b的值,返回一个true或false. 4.2 if-else if-else语句是控制程序流程的最基本形式,其中else是可选的,所以可以按下面的两种形式来使用: if(Boolean-expression) statement 或

[Thinking in Java]第4章-控制执行流程

4.1 if-else 4.2 迭代 4.3 Foreach语法 4.4 return 4.5 break和continue 4.6 switch 目录 4.1 if-else if-else中的else是可选的,有两种形式使用if: if (Boolean-expression) statement 或 if (Boolean-expression) statement1 else statement2 需要注意的是,Boolean-expression不能是数字,其实后面的while,for

控制执行流程——(Java学习笔记三)

if-else 控制程序流程最基本的形式 格式: if(boolean - expresion){ statement } 或 if(boolean - expresion){ statement }else{ statement} 例: public static int testIf(int testVal,int target){ int result = 0; if(testVal > target){ result+=1; }else if(testVal<target){ resu

[Java编程思想-学习笔记]第4章 控制执行流程

4.1  return 关键字return有两方面的用途:一方面指定一个方法结束时返回一个值:一方面强行在return位置结束整个方法,如下所示: 1 char test(int score) { 2 if (score >= 90) 3 return 'A'; 4 if (score >= 80) 5 return 'B'; 6 if (score >= 70) 7 return 'C'; 8 if (score >= 60) 9 return 'D'; 10 else //if

Java编程思想:第4章 控制执行流程

4.1 true和false 所有条件语句都用真和假来判断. 4.2 if-else if(bool-exp) statement;  or  if(bool-exp) statement; else statement; 4.3 迭代 while(b){} do{}while(b) for(init;b;step){}init里可以用逗号定义多个初始变量 4.4 Foreach语法 增强for循环  for(T t : 集合/数组){} 4.5 Return 4.6 Break和Continu

JAVA基础之控制执行流程

条件语句 仅仅包含if if(Boolean-expression) statement 包含if-else if(Boolean-expression) statement else statement 包含else if多个条件等自由组合方式 if(Boolean-expression) statement else if(Boolean-expression) statement else if(Boolean-expression) statement ... 嵌套if else if(