`
liuwei1981
  • 浏览: 772075 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:161223
社区版块
存档分类
最新评论

51.Java循环

 
阅读更多

循环语句的功能是在循环条件满足的情况下,反复执行一段代码,直到不再满足循环条件为止。

 

这个类型的工作恐怕是现在计算机最适合去做的事情之一了。无论哪个人在勤恳,重复做同样一件事情总是会新生倦怠的,这是谁也避免不了的。并且还不能保证重复做得每一次都是保证同样的质量和结果。

 

但是计算机就不同了,或者说机器就是不同了,它们非常适合做这类重复性的活动。

 

循环语句一般由下述四部分组成:
初始化部分(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不能这样做。

 

 

分享到:
评论

相关推荐

    74个java面试题,只有题目没有答案

    51. Java 组合和聚合关系 * Java 中什么是组合和聚合关系?组合关系是一种has-a关系,聚合关系是一种part-of关系。 52. Java JAR 文件 * 什么是 JAR 文件?JAR 文件是一种压缩文件,用于存储 Java 类和资源。 53...

    jsonobjectjar_jb51.zip

    `jsonobjectjar_jb51.zip`这个压缩包包含了`org.json`库的jar文件,使得Java开发者可以轻松地将Java对象转换为JSON对象,反之亦然。 在Java中使用`JsonObject`之前,我们需要先引入对应的jar包。`jsonobjectjar_jb...

    最新葵花宝典.Java软件工程师笔试面试必备

    #### 51\. 启动线程 启动线程应使用`start()`方法,而非`run()`方法。`start()`方法会创建一个新的线程,并调用`run()`方法。 #### 52\. 线程的同步问题 当一个线程进入一个对象的一个`synchronized`方法后,其他...

    Java实习源代码。(适合西北农林科技大学信息工程学院同学下载)

    4. **shixi51.java**: "实习51"可能涵盖了线程和并发编程,学习如何在Java中创建和管理线程,理解同步和异步操作。 5. **shixi54.java**: 该文件可能涉及了图形用户界面(GUI)编程,使用Java Swing或JavaFX库来...

    JAVA填空题 (2).pdf

    34. Java的控制语句包括条件语句、循环语句和转移语句。 35. Java的if语句是条件语句的一种。 36. 控制语句包括选择语句、循环语句和转移语句。 37. Java语句包括方法调用语句、表达式语句、复合语句、控制语句以及...

    java附加题及参考答案

    1. **游戏评分器.java**:这可能是一个实现游戏评分功能的程序,涉及到基本的输入输出、变量、条件语句(if-else)以及可能的循环结构,用于计算和展示玩家得分。 2. **整数数组.java**:此文件可能包含对整数数组...

    Java面试葵花宝典-打印.doc

    51. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 答案:可以,但必须有一个public类,并且文件名必须与public类名相同。 52. Java 有没有 goto? 答案:Java 中没有 goto 语句。 53. ...

    阿里java规范校验idea插件-51.zip

    6. **性能优化**:提醒开发者注意潜在的性能问题,如避免过度使用循环,合理使用集合类,以及避免在循环中进行不必要的计算。 7. **并发编程**:对于多线程编程,要求正确使用锁和同步机制,避免死锁和竞态条件。 ...

    推荐完整精品Java教程 中软国际Java培训课件 Java核心技术全套PPT课程 共22个章节.rar

    推荐完整精品Java教程 中软国际Java培训课件 Java核心技术全套课程 03java循环(共19页).ppt 推荐完整精品Java教程 中软国际Java培训课件 Java核心技术全套课程 04java数组(共30页).ppt 推荐完整精品Java教程 ...

    jre-7u51-windows-i586.gz

    "jre-7u51-windows-i586.gz" 文件是Oracle公司提供的Java运行环境的版本7更新51(7u51)的32位Windows版。这个文件采用了gzip压缩格式,通常用于在Linux或Unix系统中减小文件大小以便于传输和存储。 在Java编程的...

    Java基础.docx

    1. **复制JDK安装路径**:例如,路径为 `C:\Program Files (x86)\Java\jdk1.7.0_51\bin`。 2. **粘贴到环境变量**:打开“我的电脑” -&gt; “属性” -&gt; “高级系统设置” -&gt; “环境变量”。找到系统变量中的 `Path` ...

    51CTO下载-1040JAVA手机游戏编程源代码

    在Java中,游戏循环是游戏的核心部分,它负责处理游戏的每一帧,更新游戏状态并渲染到屏幕上。通过研究源代码,你可以看到如何设置定时器或者使用`Thread.sleep()`方法来控制游戏的帧率。 对象创建和管理在游戏中尤...

    java题库,超赞

    4. Java中跳出多重嵌套循环通常使用标签(label)和break语句。 5. switch语句可以作用在byte和short类型上,但不能直接作用在long类型上,也不能直接作用在String类型上,除非使用Java 7及以上版本的语言特性。 6. ...

    西农java实验题.zip

    通过这些实验,学生可以学习Java语言的基本语法,例如变量声明、条件语句(if-else)、循环(for、while)、函数定义和调用、类与对象的创建、继承、封装和多态等面向对象编程原则。此外,他们还将接触到文件操作、...

    java代码-51. 3-1

    在Java编程语言中,"3-1"可能指的是某种特定的编程练习或概念,但具体含义没有明确。从提供的信息来看,我们无法直接得知这个"3-1"是指数组、循环、函数还是其他什么主题。不过,我们可以根据常见的编程学习路径来...

    动力节点JAVA完美学习课程 JAVA黄埔军校2018年最新JAVA夜校班全程班视频教程 1-56部分.txt

    ├─(48) 048-Java夜校视频教程-do while循环.avi ├─(49) 049-Java夜校视频教程-循环中使用break.avi ├─(50) 05-打Java夜校视频教程-印九九乘法表.avi ├─(51) 050-Java夜校视频教程-循环中使用continue.avi ├...

    Java经典理论面试100题.pdf

    3. **跳出多重循环**:在Java中,`break`关键字可以跳出最内层的循环。 4. **静态方法与实例方法**:静态方法不能访问实例方法或实例变量,因为它们属于类,而不是特定的对象。 5. **静态变量与实例变量**:静态...

    java51个关键字详解

    Java编程语言中有51个关键字,它们在程序中扮演着至关重要的角色,用来定义类、接口、变量、方法以及控制程序流程。以下是一些主要的关键字及其解释: 1. `abstract`:抽象关键字,用于声明抽象类和抽象方法。抽象...

Global site tag (gtag.js) - Google Analytics