Java编程思想第四版——第十天

2012-03-31
97-102/913

Java编程思想第四版——第十天

第4章 控制执行流程
就像有知觉的生物一样,程序必须在执行过程中控制它的世界,并做出选择,在java中,你要使用执行控制语句来做出选择。
Java使用了C的所有流程控制语句。
关键字:if-else、while、do-while、for、return、break以及选择语句switch
Java不支持goto语句,虽然可以进行类似goto的跳转,但比起典型的goto,有了很多限制。

4.1 true和false
所有条件语句都利用条件表达式的真或假来决定执行路径。Java不允许将一个数字作为布尔值使用,C和C++中允许(真是非零,假使零)。如果想在布尔测试中使用一个非布尔值,首先必须用一个条件表达式将其转换成布尔值。(if(a)、f(a!=0))

4.2 if-else
If-else是控制程序流程的最基本的形式,else是可选的。
if(boolean-expression)
statement
if(boolean-expression)
statement
else
statement

else if,一个else后面紧跟另一个新的if语句。

Java与C和C++都是格式自由的语言,但习惯上海市将流程控制语句的主体部分缩进排列,代码能方便的确定起始与终止。

4.3 迭代
while、do-while、for用来控制循环,有时将它们划分为迭代语句(iteration statement)。语句会重复执行,直到起控制 作用的布尔表达式(boolean expression)得到假的结果为止。
while(booean-expression)
statement
循环刚开始时,会计算一次布尔表达式的值,在语句的下一次迭代开始前会再计算一次。

Math库的static方法random(),产生0和1之间(包括0,但不包括1)的一个double值。

4.3.1 do-while
do-while格式:
do
statement
while(boolean-expression)
do-while和while唯一的区别就是do-while中德语句至少会执行一次,即便表达式第一次就被计算为false。While中,条件第一次为false,其中的语句根本不会执行。
实际应用中,while比do-while更常用一些。

4.3.2 for
For循环可能是最经常使用的迭代形式,第一次迭代之前要进行初始化,随后会进行条件测试,每一次迭代结束时,进行某种形式的步进。
格式:
for(initialization; boolean-expression; step)
statement
初始化(initialization)表达式、布尔表达式(boolean-expression),或者步进(step)运算,都可以为空。每次迭代前会测试布尔表达式。若获得的结果是false,就会执行for语句后面的代码行。每次循环结束,会执行一次步进。
For循环常用于执行计数任务。

java.lang.Character包装器类,可以把char基本类型的值包装进对象。static isLowerCase()方法检查字符是否为小写字母。

C要求所有变量都在一个块的开头定义,以便编译器在创建这个块的时候,可以为那些变量分配空间。Java和C++中,可在整个块的范围内分散变量声明,在真正需要的地方才加以定义,这样可形成更自然的编程风格,也更易理解。

4.3.3 逗号操作符
不是逗号分隔符(逗号用作分隔符时用来分隔函数的不同参数)。
Java里唯一用到逗号操作符的地方就是for循环的控制表达式。在控制表达式的初始化和步进控制部分,可以使用一系列由逗号分隔的语句,而且那些语句均会独立执行。
通过使用逗号操作符,可以在for语句内定义多个变量,但是它们必须具有相同的类型。
例如:for(int i=1,j=i+10; i<5; i++,j=i*2)
for语句中的int定义涵盖了i和j,在初始化部分实际上可以拥有任意数量的具有相同类型的变量定义。在一个控制表达式中,定义多个变量的这种能力只限于for循环适用,在其他任何选择或迭代语句中都不能使用这种方式。
无论在初始化还是在步进部分,语句都是顺序执行的,此外,初始化部分可以有任意数量的同一类型的定义。

4.4 Foreach语法
Java SE5引入了一种新的更加简洁的for语法用于数组和容器,即foreach语法,表示不必创建int变量去对由访问项构成的序列进行计数,foreach将自动产生每一项。
for(float x : f),这条语句定义了一个float类型的变量x,继而将每一个f的元素赋值给x。
任何返回一个数组的方法都可以使用foreach。
例如,String类有一个方法toCharArray(),它返回一个char数组,可以用foreach迭代在字符串里面的所有字符。
foreach还可以用于任何iterable对象。
For语句会在一个整型值序列中步进:for(int i=0;i<100;i++),foreach语法支持,除非先创建一个int数组。

重载:相同的方法名可以具有不同的参数列表。

做性能调优,使用仿真器做评价(一种可以度量代码性能的工具)。

foreach语法不仅在录入代码时可以节省时间,更重要的是,它阅读起来也要容易的多,它说明正在努力做什么(例如获取数组中的每一个元素),而不是给出正在如何做的细节(例如正在创建索引,因此可以使用它来选取数组中的每一个元素)。

4.5 return
在java中有多个关键词表示无条件分支,它们只是表示这个分支无需任何测试即可发生。这些关键词包括return、break、continue和一中与其他语言中的goto类似的跳转到标号语句的方式。
Return关键词有两方面的用途:一方面指定一个方法返回什么值(假设它没有void返回值),另一方面它会导致当前的方法退出,并返回那个值。

方法在执行了return后不再继续执行。

如果在返回void的方法中没有return语句,那么在该方法的结尾处会有一个隐式的return,因此在方法中并非总是必须要有一个return语句。但是,如果一个方法声明它将返回void之外的其他东西,那么必须确保每一条代码路径都将返回一个值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值