我们有了上面几章的基础知识做铺垫,可以写出一些简单的运算程序了。但是程序在执行的过程中往往需要做大量的分支控制,来做出自己的选择;还需要不断重复地执行逻辑规则相似的代码,这就涉及到我们这一整章介绍的内容:控制执行流程。涉及到的关键字有if-else、while、do-while、for、return、break、continue、switch。
“4.1 true和false”所有条件语句都利用条件表达式的真或假来决定执行路径。这点可以认为是c/c++与java的一个区别,在c/c++中可以允许一个数字作为布尔值使用,在Java中不允许。希望学过c/c++转到学Java的时候特别注意一下。
“4.2 if-else” if-else语句就是控制程序流程的基本形式,其中else可以省略,形式如下:
if(Boolean-expression)
statement
或
if(Boolean-expression)
statement
else
statement
Boolean-expression为true就执行if里面的部分,否则就执行else的部分或者if外面的部分。用一个例子来感受一下:
importstaticnet.mindview.util.Print.*; publicclassIfElse { staticintresult=0; staticvoidtest(inttestval, inttarget) { if(testval>target) result=+1; elseif(testval<target) result=-1; elseresult=0; // Match } publicstaticvoidmain(String[] args) { test(10, 5); print(result); test(5, 10); print(result); test(5, 5); print(result); } }
/* Output:
1
-1
0
*///:~
“4.3 迭代”主要描述控制循环的编程技巧,使用while、do-while和for关键词,他们也叫迭代语句。
while格式:
while(Boolean-expression)
statement
do-while格式
do
statement
while(Boolean-expression);
上述两种格式都是只有在Boolean-expression为true的情况下进入下一次循环,唯一的区别是do-while至少执行一次,而while可能一次都不会执行。
for循环的形式如下:
for(initialization; Boolean-expression; step)
statement
initialization为初始化语句,Boolean-expression为布尔表达式,step为步长。根据Boolean-expression的值决定是否进行下一次循环。
publicclassCommaOperator { publicstaticvoidmain(String[] args) { for(inti=1, j=i+10; i<5; i++, j=i*2) { System.out.println("i = "+i+" j = "+j); } } }
/* Output:
i = 1 j = 11
i = 2 j = 4
i = 3 j = 6
i = 4 j = 8
*///:~
上面是for循环的一个例子,里面还用到了逗号表达式,主要是根据i<5来判断循环是否继续进行,初始化只是计算i和j的初始值,分别是1和11,然后按照i=i+1和j=i*2的步长递增。这个例子有点复杂,你可以自己简化跟简答的for训练的例子,好好琢磨一下就可以领会了。