循环语句的功能是在循环条件满足的情况下,反复执行一段代码,直到不再满足循环条件为止。
这个类型的工作恐怕是现在计算机最适合去做的事情之一了。无论哪个人在勤恳,重复做同样一件事情总是会新生倦怠的,这是谁也避免不了的。并且还不能保证重复做得每一次都是保证同样的质量和结果。
但是计算机就不同了,或者说机器就是不同了,它们非常适合做这类重复性的活动。
循环语句一般由下述四部分组成:
初始化部分(init_statement):一条或多条语句,用来做一些初始化工作,例如设置计数器初值等;
循环条件部分(test_exp):这是一个boolean类型的表达式,根据它的值来判断是否继续进行下一次循环;
循环体部分(body_statement):将被循环执行的目标代码,可以是一条语句,也可以是一个语句块;
迭代部分(alter_statement):在一次循环结束后,下一次循环开始前执行的语句,通常用于修改循环计数器的值。
循环语句使语句或块的执行得以重复进行。
Java编程语言支持三种循环构造类型:for, while和do while。三种循环结构均通过一个条件表达式来控制。
在while()和for()结构中,条件判断均先于语句块执行,所以,有可能语句块一次也不执行。
在do…while()中,语句块先于条件判断,所以,语句块至少执行一次。
这里先来看for循环的使用。
for语句的基本格式如下:
for ( init_expr ; boolean test_expr ; alter_expr){
statement or block;
}
其中:init_expr表示初始化代码,而test_expr是用于条件判断的表达式,如果表达式的值为true,则执行后面的语句,接下来进行后面的步进代码alter_expr。如果条件判断表达式test_expr第一次求值就为false,那么for循环不会进行任何的迭代,后面的statement也不会进行任何的操作。
程序执行遇到for语句时,首先执行初始化部分(init_statement)的语句,然后计算循环条件表达式test_exp的值,如为true,则执行循环体部分的语句(body_statement),否则结束循环。
一次循环结束后,下一次循环开始前,执行迭代部分的语句(alter_statement),然后判断循环条件表达式test_exp的值,决定是否进行下一次循环。
请看下面这个for循环的例子:
int result = 1;
for (int k = 5;k>1;k--) {
result = result * k;
}
上面这个程序片断的作用是实现一个简单的阶乘运算:n*(n-1)*(n-2)*…*1,在这里,n的值为5,因此,它运算的结果是5*(5-1)*(5-2)*(5-3)*(5-4)=5*4*3*2*1=120。
上面的例子中,init_expr只有一个初始化的值,条件判断表达式也只有一个条件,步进代码也是每次递减一个数字。但是,其实Java允许在for语句的循环控制的各个部分放置任何表达式,如下例:
for(int b = 0,s = 0,p = 0;(b<10)&&(s<4)&&(p<10);p++){
//代码块
//更新b和s 的值
}
在这个例子中,初始化的变量有三个,但是,只能有一个声明语句,所以,如果需要在初始化表达式init_expr中声明多个变量,那么这些变量必须是同一种数据类型的。
for循环并没有限制在它的for语句的每一部分都必须提供一个表达式,这三个部分其实都可以为空,此时,是一个无限的循环。这在语法上是没有错误的,只是这种循环在实际应用中会引起很多的问题,我们应该避免这种会引起无限循环的for语句。
下面来看一个例子,来了解一下for语句中各部分为空时的控制情况:
int sum=0;
//注意看这个for语句,它的步进部分是空的
for (int i=1;i<=n;){
sum=sum+i;
//将步进放到了for程序块中
i++;
}
注意这个for语句,它的步进部分是空的,我们将这个步进运算放到了程序块中。
一个无限for循环的例子如下:
for(;;){
//程序块
}
这种情况一般是要避免的,我们不应该让程序出现这种无限循环的情况。
在for语句内定义的变量,它的作用范围仅限于for语句块、表达式以及for子句的语句部分。在for循环终止后,它们将不可被访问。如果需要在for循环外部使用循环计数器的值,可以将这个变量定义在for循环体外,如下:
int k;
for(k = 0;k<10;k++){
//statements
}
//此时可以再使用变量k
另外,如果变量定义在for循环体内,则在另外一个循环体中还可以使用相同的变量名称,如下:
for(int k=0;k<10;k++) {
… …
}
for(int k = 100;k>0;k--) {
… …
}
上面的代码段是合法的。
while循环语句的格式:
init_statement
while ( boolean_expr ){
statement or block;
alter_expr;
}
while语句首先测试boolean_expr表达式的值,如果为true,则运行代码块中的程序,并且一般需要进行迭代运算,以改变boolean_expr表达式中的变量的值,直到表达式中的值变为false。
如果刚开始条件表达式就为false,则while循环永远也不会被执行。
来看一个while循环的例子:
… …
//while循环
int result1=0;
int result2=0;
//初始化一个变量
int i=1;
//利用这个变量构成一个条件表达式
while(i<=10) {
result1=result1+i;
//将i加1
i=i+1;
}
System.out.println("After the While Loop,the result1 is:"+result1);
… …
for循环和while循环是等价的,我们可以将如下的for循环:
for(init_expr;test_expr;alter_expr){
statements;
}
改写成如下的while循环方式:
init_expr;
while(test_expr){
statements;
alter_expr;
}
这两种方式是完全可以相互替换的。for循环和其他两个循环控制语句不同的地方在于,它可以在控制表达式中定义变量,而while/do…while不能这样做。
相关推荐
51. Java 组合和聚合关系 * Java 中什么是组合和聚合关系?组合关系是一种has-a关系,聚合关系是一种part-of关系。 52. Java JAR 文件 * 什么是 JAR 文件?JAR 文件是一种压缩文件,用于存储 Java 类和资源。 53...
`jsonobjectjar_jb51.zip`这个压缩包包含了`org.json`库的jar文件,使得Java开发者可以轻松地将Java对象转换为JSON对象,反之亦然。 在Java中使用`JsonObject`之前,我们需要先引入对应的jar包。`jsonobjectjar_jb...
#### 51\. 启动线程 启动线程应使用`start()`方法,而非`run()`方法。`start()`方法会创建一个新的线程,并调用`run()`方法。 #### 52\. 线程的同步问题 当一个线程进入一个对象的一个`synchronized`方法后,其他...
4. **shixi51.java**: "实习51"可能涵盖了线程和并发编程,学习如何在Java中创建和管理线程,理解同步和异步操作。 5. **shixi54.java**: 该文件可能涉及了图形用户界面(GUI)编程,使用Java Swing或JavaFX库来...
34. Java的控制语句包括条件语句、循环语句和转移语句。 35. Java的if语句是条件语句的一种。 36. 控制语句包括选择语句、循环语句和转移语句。 37. Java语句包括方法调用语句、表达式语句、复合语句、控制语句以及...
1. **游戏评分器.java**:这可能是一个实现游戏评分功能的程序,涉及到基本的输入输出、变量、条件语句(if-else)以及可能的循环结构,用于计算和展示玩家得分。 2. **整数数组.java**:此文件可能包含对整数数组...
51. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 答案:可以,但必须有一个public类,并且文件名必须与public类名相同。 52. Java 有没有 goto? 答案:Java 中没有 goto 语句。 53. ...
6. **性能优化**:提醒开发者注意潜在的性能问题,如避免过度使用循环,合理使用集合类,以及避免在循环中进行不必要的计算。 7. **并发编程**:对于多线程编程,要求正确使用锁和同步机制,避免死锁和竞态条件。 ...
推荐完整精品Java教程 中软国际Java培训课件 Java核心技术全套课程 03java循环(共19页).ppt 推荐完整精品Java教程 中软国际Java培训课件 Java核心技术全套课程 04java数组(共30页).ppt 推荐完整精品Java教程 ...
"jre-7u51-windows-i586.gz" 文件是Oracle公司提供的Java运行环境的版本7更新51(7u51)的32位Windows版。这个文件采用了gzip压缩格式,通常用于在Linux或Unix系统中减小文件大小以便于传输和存储。 在Java编程的...
1. **复制JDK安装路径**:例如,路径为 `C:\Program Files (x86)\Java\jdk1.7.0_51\bin`。 2. **粘贴到环境变量**:打开“我的电脑” -> “属性” -> “高级系统设置” -> “环境变量”。找到系统变量中的 `Path` ...
在Java中,游戏循环是游戏的核心部分,它负责处理游戏的每一帧,更新游戏状态并渲染到屏幕上。通过研究源代码,你可以看到如何设置定时器或者使用`Thread.sleep()`方法来控制游戏的帧率。 对象创建和管理在游戏中尤...
4. Java中跳出多重嵌套循环通常使用标签(label)和break语句。 5. switch语句可以作用在byte和short类型上,但不能直接作用在long类型上,也不能直接作用在String类型上,除非使用Java 7及以上版本的语言特性。 6. ...
通过这些实验,学生可以学习Java语言的基本语法,例如变量声明、条件语句(if-else)、循环(for、while)、函数定义和调用、类与对象的创建、继承、封装和多态等面向对象编程原则。此外,他们还将接触到文件操作、...
在Java编程语言中,"3-1"可能指的是某种特定的编程练习或概念,但具体含义没有明确。从提供的信息来看,我们无法直接得知这个"3-1"是指数组、循环、函数还是其他什么主题。不过,我们可以根据常见的编程学习路径来...
├─(48) 048-Java夜校视频教程-do while循环.avi ├─(49) 049-Java夜校视频教程-循环中使用break.avi ├─(50) 05-打Java夜校视频教程-印九九乘法表.avi ├─(51) 050-Java夜校视频教程-循环中使用continue.avi ├...
3. **跳出多重循环**:在Java中,`break`关键字可以跳出最内层的循环。 4. **静态方法与实例方法**:静态方法不能访问实例方法或实例变量,因为它们属于类,而不是特定的对象。 5. **静态变量与实例变量**:静态...
Java编程语言中有51个关键字,它们在程序中扮演着至关重要的角色,用来定义类、接口、变量、方法以及控制程序流程。以下是一些主要的关键字及其解释: 1. `abstract`:抽象关键字,用于声明抽象类和抽象方法。抽象...