Reading "Thinking in Java" #2
2004-11-25 17:53
489 查看
For
那么,这次来复习 "for"。 首先是形式:
for(initialization; Boolean-expression; step)
statement
这个是再熟悉不过了,对于我来说自从初中开始学习PASCAL开始for循环就一直是使用率最高的循环控制结构。然而,通常我只是使用单个变量最为参数的for循环,其实for循环的initialization 定义多个同型的变量。例如:
注意此处逗号(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
那么,这次来复习 "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
相关文章推荐
- Java学习从入门到精通
- eclipse启动参数研究
- 使用 Eclipse 插件来编辑、编译和调试应用程序(zz from chianitlab.com)
- Eclipse基础--使用links方式安装Eclipse插件
- JAAS:灵活的Java安全机制
- Java的class编译为EXE的几种方法( 转)
- Eclipse 3.0资料收集
- 转载:在 Java 中如何进行 BASE64 编码和解码
- Java实现的插入法建立B+树
- 开发和部署一个作为 WebSphere Portal V5 Portlet 的 Struts 应用程序
- 用 WebSphere Studio V5 编写 Struts 应用程序
- java辨析(3) :is a 和 like a
- log4j使用示例
- 正确优雅的解决用户退出问题——JSP和Struts解决方案 (转)
- Struts需求分析与设计
- eclipse启动参数研究
- Java走势分析 --作者:清华大学 王克宏 丁峰 发文时间:2003.03.26 10:18:40
- Java Exception 选择自 darkula 的 Blog
- Struts原理与实践(8)
- Struts原理与实践(7)