1.导语
- 程序必须在执行过程中控制它的世界,并作出选择。在java中,要使用执行控制语句来作出选择。
- java使用了C的所有的流程控制语句,关键字如 if-else、while、do-while、for、return、break以及选择语句switch,
- java并不支持got语句,它是解决某些特殊问题最便利的方法。
- 在java中,仍然可以进行类似goto那样的跳转,但有很多的限制。
2.true和false
- 所有的条件语句都利用条件表达式的真或假来决定执行路径。例如a==b,
它用条件操作符“==”lai 判断a值是否等于b值,类似的还有!= ,<、>、>=等。
这些操作符最后返回true或false. - java 不允许将一个数字作为布尔值来用,如0假,非零真,虽然这在C中是允许的。
3.if-else
- if-else,其中else是可选的。
if (Boolean-expression) statement
if的括号内必须有一个Boolean 结果,可能是由布尔表达式产生的。statement指用分号结尾的简单语句,或符合语句
——封闭在{}内的一组简单语句。 - else if()语句,并非新的关键字,仅仅是else后面紧跟另一个新的if语句。
- 尽管java和C和C++一样,是“格式自由”语言,但还是习惯上将流程控制语句的主体部分缩进排列,方便阅读代码。
4.迭代
- while、do-while、和for用来控制循环,有时将他们划分为“迭代语句”。
语句会重复执行,知道其控制作用的“布尔表达式”得到“假”的结果为止。
4.1while语句
while (Boolean-expression) statement ()内的Boolean值为假时循环停止
4.2do-while
- while和do-while唯一的区别就是do-while中的语句至少会执行一次,即便表达式第一次就被计算为false。
- 实际运用中,while被do-while更常用一些。
do statement while(Boolean-expression);
4.3for
- for循环是最常用的迭代形式,在第一次迭代之前要进行初始化,随后它会进行条件测试,每一次迭代结束时,进行某种形式的“步进”,就是类似于i++的操作。
for (initialization; Boolean-expression; step) statement
初始化(initialization)表达式、布尔表达式(Boolean-expression)、或者步进(step),都可以为空 - 每次迭代前都会进行测试布尔表达式,如果获得的结果是false,就会跳出循环,执行for语句后面的代码。
for (int i = 0; i < array.length; i++) { }
注意i,它的作用域只是for作用域内。 - 在java和c++中,可以在整个块(如类的作用域)的范围内分散变量声明,在需要的地方加以定义或初始化。
4.4逗号操作符和逗号分隔符
- 逗号分隔符用来分隔函数(方法)参数列表的不同参数的。
- java里唯一用到逗号操作符的地方就是for循环的控制表达式。
- 在控制表达式的初始化和步进步进部分可以使用一系列的逗号分隔的语句,而且这些语句都会独立的执行
for (int i = 0,j = i + 10; i < 5; i++,j = i * 2) { }
在一个控制表达式中,定义多个变量的这种能力只限于for循环适用,在其他任何选择或迭代语句中都不能使用这种方式。 - 初始化部分可以用任意数量的同一类型的定义。
4.5Forreach语法
- java se5引入的新的更加简洁的for语法用于数组和容器。表示不必创建int变量去对由访问项构成的序列进行计数,forreach将自动产生每一项。
for (char c : "An African Swallow".toCharArray()) { }
将数组的每一个值都赋给c一遍,直到遍历整个数组。
5.return 无条件分支
- 在java中有多个关键字表示无条件,它们只是表示这个分支无需任何测试即可发生。
这些关键字包括return、break、continue和一种与其他语言类似的跳转到标号语句的方式(switch)。 - return 语句有两种用途:1.制定一个方法返回什么值(假设它没有void返回值),2.会导致当前方法退出,并返回那个值,如果是void的话,就不需要return,但其实这个方法返回了一个null(隐式的),即return null;
6.break 和 continue
- 在任何迭代语句的主体部分,都可用break和continue控制循环的流程。
- break退出循环,不在执行循环中剩余的语句。
- continue则是停止执行当前的迭代,然后退回循环起始处,开始下一次迭代。
7.无限循环的方式
- while(true)
- for(;;)
- 然而,在强大的无限循环都可以使用break来终止其循环。
8.goto语句
- 编程语言一开始就有goto关键字,事实上,goto起源于汇编语言的控制流程
“若条件A成立,则跳到这里,否则,跳到那里”。 - 在goto滥用的程序里,程序总是从一个地方跳到另一个地方,还有什么办法能够识别程序的控制执行的流程呢。
最好的办法是在改用的地方用goto,不该用的地方不要用, - 在少数情况下,goto还是组织控制流程的最佳手段。
- goto是java中的一个保留字,但在语言中并没有使用它;java中没有goto.
9.标签机制
- 标签是后面跟有冒号的标识符。如label:
- 在java中,标签起作用的唯一地方刚好是在迭代语句之前。“刚好之前”是指在迭代语句和标签之间插入任何语句都不好。
- 设置标签的唯一理由是:在其中嵌套另一个迭代或者一个开关。 如跳出当前循环而到另一个循环
for (char c : "An African Swallow".toCharArray()) { for (int i = 0; i < array.length; i++) { System.out.println("跳出"); break; } }
10.switch语句
- 有时switch语句被划归为一种选择语句。switch 可以从一系列选择中选出一条选择来执行。
如上代码,如果i==1则执行1 case块,如果2,则执行2,块,都不是,则执行default块。
switch (i) { case 1: break; case 2: break; default: // break;//此处可以注释掉,因为执行流程已经到了break的跳转目的地 }
11.总结
- 大多数语言都具有的基本特性:运算、操作符有限级、类型转换、以及循环