您的位置:首页 > 编程语言 > Java开发

Reading "Thinking in Java" #2

2004-11-25 17:53 489 查看
For
那么,这次来复习 "for"。  首先是形式:
for(initialization; Boolean-expression; step)
  statement
这个是再熟悉不过了,对于我来说自从初中开始学习PASCAL开始for循环就一直是使用率最高的循环控制结构。然而,通常我只是使用单个变量最为参数的for循环,其实for循环的initialization 定义多个同型的变量。例如:
for(int i = 0, j = 1; i < 10 && j != 11; i++, j++)
// body of for loop

注意此处逗号(comma)的特殊用法,在for循环中的 initialization 与 step 部分是Java中唯一如此使用逗号的地方。在这里,Bruce Eckel称这时的 comma 为the comma operator 。而 initialization 与 step 中被逗号分割的statement将按照顺序方式执行,仿佛分号分割的statement一般。特别的,initialization 中只能定义同型变量。

这里,再说无穷循环。根据Bruce所说,一般而言Java编译器将while(true) and for(;;) 视为相同,所以如何取舍完全是个人编程口味而已。就我而言,更倾向于使用while(true) 。原因很简单,语义一目了然。

关于break和continue,只是有一点要强调一下:如果使用label,那么break跳出label所描述的循环,而continue则会掉到label处而后重新进入循环。说实话,我真的很不喜欢label。。。

Switch
接着提一下switch,这个控制结构我从前比较少用到,因为觉得只可以对int值做判断不太方便。但是不久前写的一个windows窗口程序及另一个Java Applet程序的事件处理部分,发现switch还是非常便利的。有一点,就是如果某个case后的表达式符合后会一直执行之后的statement直到break语句或者结束。原本觉得这是个麻烦,如《Java in Nutshell》这类书只是提及语言规范却没有足够的说明,而Bruce Eckel则亲切地指出了一个利用此特性的技巧:让多个case堆叠起来,造成“只要吻合其中任何一个条件,便都执行相同的程序代码”的效果。 例如:

package com.smilereader.test;

恩,虽然还没有熟悉JUnit,但是还是写个简陋的测试吧。恩,有时间一定要仔细看看JUnit的doc。似乎我还下决心看完Tomcat的doc?.....-_-b

package com.smilereader.test;

import junit.framework.TestCase;

最后捎带一句Math.random( )返回值的范围是: [0,1)

BTW,最后的最后,发现JDK1.4和1.3变化太大了。因为,决定放弃手上的中文版砖头书,以不怕视力下降的魄力开始啃Thinking in Java, 3rd ed. Revision 4.0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: