《Java 7程序设计入门经典》一3.8 for循环中的一些特殊情况

简介: 本节书摘来自华章出版社《Java 7程序设计入门经典》一书中的第3章,第3.8节,作者 (美)Herbert Schildt Dale Skrien,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.8 for循环中的一些特殊情况

因为for循环有很多变化,所以for循环是Java语言中用处最多的语句。一个最常见的用法是有多个循环控制变量。在使用多个循环控制变量时,每个表达式的初始化表达式和迭代表达式用逗号分隔。下面是一个简单的例子:
image

程序输出如下所示:
image

注意,逗号将两个初始化表达式和迭代表达式分开的方式。当循环开始时,在循环的初始化部分初始化变量i和变量j。每次循环开始时,递增变量i,递减变量j。当i大于等于j时结束循环。理论上,可以有任意数量的循环控制变量,但实际上,两三个循环控制变量就会让for循环很难看。
for循环的另一种常见变化与循环控制条件的本质有关。这种情况不需要引入循环控制变量。条件语句可以是任意有效的boolean表达式。在下面的例子中,循环一直执行,直到用户在键盘敲击字母S:
image

3.8.1 缺少部分

通过对循环定义的部分片段留空,可以为for循环创造许多有趣的变化。在Java中,for循环的初始化部分、条件部分或迭代部分中的任何一个或全部都可能为空。例如,考虑下面程序:
image

这里,for循环的迭代表达式为空。但是,循环控制变量i在循环体内部递增。这意味着,每次循环时只检查变量i是否等于10,不再进行其他操作。但是,由于变量i在循环主体内部增加,因此循环正常运行,显示以下输出:

image

在下一个例子中,for循环的初始化部分也移除了。
image

在这个版本中,变量i在循环开始前初始化,而不是作为for循环的一部分。一般情况下,会在for的内部初始化循环控制变量。通常,只有在初始值不是由for语句内部的过程得到的情况下,才将初始化语句放在循环外面。

3.8.2 无限循环

通过将for循环的条件表达式留空,可以创建无限循环(infinite loop)。这是一个永不终止的循环。例如,很多Java程序员用下面的代码段创建无限循环:
image

循环将永远运行下去。尽管一些编程任务(如操作系统的命令进程)需要无限循环,但是绝大多数的“无限循环”仅仅是包括特殊终止语句的循环。在本章末将会看到如何停止这类循环。(提示:使用break语句终止循环。)

3.8.3 没有循环体的循环

在Java中,for循环(或其他循环)的循环体可以留空。这是因为,从语法上看,空语句(null statement)是有效的。没有循环体的循环经常很有用。例如,下面程序就用了一个没有循环体的循环来计算1~5之间整数的和:
image

image

注意,累加过程在for循环内执行,不需要循环体。请特别关注迭代表达式:
image

不要畏惧这样的语句。它们在专业的Java程序中经常遇到。如果将它们分为多个部分,就很容易理解了。简言之,这个语句就是将sum的结果加上i再赋给sum,然后将变量i递增1。所以,该语句与以下语句相同:

相关文章
|
1月前
|
Java
JAVA结构化程序设计
JAVA结构化程序设计
16 0
|
1月前
|
Java
Java周期循环的代码可以如此简单
Java周期循环的代码可以如此简单
26 2
|
1月前
|
Java 物联网 测试技术
Java面向对象程序设计3面向对象基础
Java面向对象程序设计3面向对象基础
168 0
|
30天前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
92 3
|
1月前
|
设计模式 Java 数据安全/隐私保护
Java面向对象程序设计
Java面向对象程序设计
7 0
|
1月前
|
Java
java使用循环案例—
java使用循环案例—
9 0
|
1月前
|
存储 Java
Java程序设计练习题8异常处理
Java程序设计练习题8异常处理
65 0
|
1月前
|
Java
Java面向对象程序设计5接口与抽象类
Java面向对象程序设计5接口与抽象类
25 0
|
1月前
|
自然语言处理 Java Perl
Java数组的程序设计
Java数组的程序设计
17 0
|
1月前
|
Java 开发者 Spring
【Java】Spring循环依赖:原因与解决方法
【Java】Spring循环依赖:原因与解决方法
35 0