那么,这次来复习 "for"。 首先是形式:
for(initialization; Boolean-expression; step)
statement
这个是再熟悉不过了,对于我来说自从初中开始学习PASCAL开始for循环就一直是使用率最高的循环控制结构。然而,通常我只是使用单个变量最为参数的for循环,其实for循环的initialization 定义多个同型的变量。例如:
( i = 0, j = 1; i < 10 && j != 11; i++, j++)
注意此处逗号(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堆叠起来,造成“只要吻合其中任何一个条件,便都执行相同的程序代码”的效果。 例如:













































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
































最后捎带一句Math.random( )返回值的范围是: [0,1)
BTW,最后的最后,发现JDK1.4和1.3变化太大了。因为,决定放弃手上的中文版砖头书,以不怕视力下降的魄力开始啃Thinking in Java, 3rd ed. Revision 4.0