Java009if_else_while_do_while_for_foreach
①if-else
②while_do-while_for迭代
a.while
b.do-while
c.for
d.无穷循环
③逗号操作符/分隔符
a. 逗号操作符
b. 逗号分隔符
④foreach
Java009if_else_while_do_while_for_foreach
控制执行流程:就像有知觉的生物一样,程序必须在执行过程中控制它的世界,并做出选择。在Java中,你要使用执行控制语句来做出选择。所有条件语句都利用条件表达式的真或假来决定执行路径。注意Java不允许用一个数字作为布尔值使用(C和C++允许,非零-true,零-false)。
①if-else
if-else语句是控制程序流程的最基本形式,其中else是可选的,格式如下:
if(Boolean-expression)
statement
或
if(Boolean-expression)
statement
else
statement
或
if(Boolean-expression)
statement
else if
statement
else if
statement
...
else
statement
布尔表达式必须产生一个布尔结果,statement指用分号结尾的简单语句,或复合语句(封闭在花括号内的一组简单语句)。
尽管Java与它之前产生的C和C++一样,都是“自由格式”的语言,但是习惯上还是将流程控制语句的主体部分缩进排列,使读者能方便地确定起始和终止。
②while_do-while_for迭代
while/do-while/for用来控制循环,有时将它们划分为迭代语句(iteration statement)。语句会重复执行,直到起控制作用的布尔表达式得到“假”的结果为止。
a.while
while(Boolean-expression)
statement
在循环刚开始,会计算一次布尔表达式的值;而在语句的下一次迭代开始前会再计算一次。只要条件满足就会继续执行语句,当条件不再满足则跳出循环不继续再执行。
b.do-while
do
statement
while(Boolean_expression)
while和do-while的唯一区别就是do-while中的语句至少会执行一次,既便表达式第一次就被计算为false。而在while中,如果条件第一次就为false,那么其中的语句根本就不会得到执行。在实际应用中,while比do-while更常用一些。
c.for
for循环可能是最常使用的迭代形式,其在第一次迭代之前需要进行初始化。随后,它会进行条件测试,而且在每次迭代结束时,进行某种形式的“步进”。格式如下:
for(initialization; Boolean-expression; step)
statement
初始化(initialization)表达式/布尔表达式(Boolean-expression),或者步进(step)运算,都可以为空。每次迭代前会测试布尔表达式。若获得结果是false,就会执行for语句后面的代码行。每次循环结束,会执行一次步进。即语句执行完毕才会步进。
for循环常用于执行“计数”任务。
![]() |
注意变量c是在程序用到它的地方被定义的,也就是在for循环的控制表达式里,而不是在main()开始的地方定义的。c的作用域就是for控制的表达式的范围内。
对于向C语言那样的传统的过程型语言,要求所有变量都在一个块的开头定义,以便编译器在创建这个块的时候,可以为那些变量分配空间。而在Java和C++中,则可在整个块的范围内分散变量声明,在真正需要的地方才加以定义。这样便可形成更自然的编程风格,也更易理解。
d.无穷循环
while(true)
for(;;)
③逗号操作符/分隔符
a.逗号操作符
Java中唯一用到逗号操作符的地方就是for循环的控制表达式。在控制表达式的初始化和步进控制部分(布尔表达式部分,只要稍微思索一下自然会明白为何不能使用逗号操作符分隔。假如可以这么做,岂不是会有多个布尔表达式,也可能会有多个布尔值结果,会乱的),可以使用一系列由逗号分隔的语句;而且那些语句均会独立执行。
![]() |
通过使用逗号操作符,可以在for语句内定义多个变量,但是它们必须具有相同的类型。
b.逗号分隔符
用来分隔函数的不同参数
④foreach
foreach是一种更加简洁的for语法用于数据和容器。不必创建int变量去对由访问项构成的序列进行计数,foreach将自动产生每一项。
foreach(float x : f)这条语句定义了一个float类型的变量,继而将每一个f的元素赋值给x。
foreach语法不仅在录入代码时可以节省时间,更重要的是,它阅读起来也要容易很多,它说明你正在努力做什么(例如获取数组的每一个元素),而不是给出你正在如何做的细节(例如正在创建索引,因此可以使用它来选取数组中的每一个元素)。只要有可能就尽量使用foreach语法吧。
![]() |