4.0:就像有知觉的生物一样,程序在执行的过程中控制它的世界,并做出选择。在java中你要使用执行控制语句来做出选择。
java是建立在C基础上的,java使用了C的所有流程控制语句。大多数过程型编程语言都具有某些形式的控制语句,他们通常在各种语言间是交迭的。在java中,涉及的关键字包括 :if-else,while,do-while,for,return, break,以及选择性语句switch。
然而,java中并不支持goto语句(该语句引起许多反对意见,但它仍是解决某些特殊问题的最便利的方法),在java中仍可以使用goto的跳转,但是比典型的goto,多了很多限制。
个人问题:一直以为goto是保留字,但是好像goto可以用在流程控制的跳转中,但是会有限制,它为什么受限制?
4.1 true和false
所有的条件语句都是利用条件表达式的真假来决定执行路径。这里有一个条件表达式的例子,如a==b,它是用条件操作符“==”来判断a值和b值是否相等,并返回true和false。
本章前面介绍的关系操作符,都可以用来构造条件语句,但是java不允许我们将一个数字作为布尔值来使用,但是在C中可以(C中 0代表假 非0代表真),但是java中不允许,必须转换成布尔值来做条件;如if(a)------>if(a!=0)。
4.2 if-else
if-else语句是最常见的流程控制的形式,其中的else是可选的。
if-else if -else格式
在test()的可以看到一个else if,这个并不是新的关键字,仅仅是else后面紧跟了一个新的if语句。
4.3 迭代
迭代语句(就是可以重复执行的语句,直到起控制作用的布尔表达式为假,才退出):while , do-while , for(用来控制循环)
while:
public static void main(String[] args) { while(true){ System.out.print("条件一直为真,一直输出"); }; }
总结:
在循环刚开始时,会计算一次布尔表达式的值;而在下一次迭代的时候,会再次计算一次布尔值。
condition()方法用到了Math库里的static(静态)方法random(),该方法的作用是产生0和1之间的随机数(包括0,但不包括1)的一个double值
do-while:
public static void main(String[] args) { do { System.out.print("打豆豆"); } while (false); }
总结:while和do-while的区别,就是do-while中do的语句肯定会执行一次。
for:
for循环是最常用的迭代形式,在第一次迭代前要进行初始化。随后,会进行条件测试,每次迭代结束时,进行“步进”操作。
格式:
for(inirialization ; Boolean-expression ; step)
初始化表达式 布尔表达式 布进运算
statement;
每次迭代前都会测试布尔表达式,若结果为false,就会执行代码。每次结束会执行一次布进。
练习1:写一个程序,打印从1到100的值
for (int i = 1; i < 101; i++) { System.out.print(i); }
练习2:写一个程序,产生25哥int类型的随机数。对于每一个随机数,使用if-else语句来将其分类为大于,小于,或等于紧随它而随机生成的值。
练习3:修改练习2,把代码用一个while无限循环包括起来,然后运行它直至用键盘中断其运行(通常是按住CTRL + C)。
练习4:写一个程序,使用两个嵌套的for循环和取余操作符(%)来探测和打印素数(只能被其自身和1整除,而不被其他数字整除的整数)
练习5:重复第3章中的练习10,不要用Integer.toBinaryString()方法,而是用三元操作付和按位操作符来显示二进制的1和0。
4.3:逗号操作符
在java中唯一用到逗号操作符的地方就是for循环的控制表达式。在控制表达式的初始化和步进控制部分,可以使用一系列的逗号分隔的语句。
通过使用逗号操作符,可以在for语句中定义多个变量,但是他们必须具有相同的类型。
public static void main(String[] args) { for (int i = 1, j = i + 10; i < 5; i++, j = i * 2) { System.err.println("i = " + i + "j = " + j); } }
for循环中int定义涵盖了i和j,在初始化部分实际上可以拥有任意数量具有相同类型的变量定义。
在一个控制表达式中,定义多个变量的这种能力,只限于for循环适用,在其他选择或迭代语句中不能使用这种方式。
4.4:Foreach语法:
javaSE5引入了一种新的for语法,用于数组和容器。即Foreach语句,表示不必创建int变量去对由访问项构成的序列进行计数。foreach将自动产生每一项。