A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangqing 黑马帝   /  2011-11-8 06:31  /  14283 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wangqing 于 2011-11-27 13:37 编辑

for循环语句和while循环语句有什么区别?

9 个回复

倒序浏览
1.变量有自己的作用域.对于for来讲,如果将用于控制的增量定义在for语句中,那么该变量只在for语句内有效,for语句执行完毕.该变量在内丰中被释放.
2. for与while可以进行互换.如果需要定义增量.用For更为合适.
老毕原本....        

评分

参与人数 1技术分 +2 收起 理由
宁超 + 2 赞一个!

查看全部评分

回复 使用道具 举报
循环结构是指在满足循环条件时反复执行循环代码代码块,直到

循环条件不能满足为止。一个循环语句一般应包含4个部分的内

容:
    初始化部分:设置循环控制的一些初始条件
    循环体部分:反复执行的代码
    迭代部分:修改循环控制条件
    判断部分:判断是否继续循环执行体
while循环
    格式如下:
        初始化部分;
        while(判断部分){
            循环体部分;
            迭代部分;
        }
    其中初始化部分和迭代部分可以没有。如果有初始化部分,

程序先执行初始化部分,再执行判断部分,如果为真值,则执行

红色显示的部分(即执行循环体部分,如果有迭代部分,执行迭

代部分),然后再执行判断部分,如果为真值,再执行红色显示

的部分,直至判断部分运算的结果为假值结束循环。
for循环
    for循环是使用最广泛的一种循环结构,格式如下:
        for(初始化部分;判断部分;迭代部分;){
            循环体部分;
        }
    其中初始化部分可以没有,如果有初始化部分,首先执行初始化部分,然后执行判断部分,如果结果为真值,执行循环体部分,最后执行迭代部分。完成一次循环后,再执行判断部分,直到其结果为假值 。
结束循环。for循环通常用于循环次数可以确定的情况,也可用于不确定的情况。注意:初始化部分和迭代部分可以使用逗号来分隔多个语句
希望能帮上你

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
循环有三种形式,while,do……while,和for,在表达上是等价的,也就是说,任意一个循环都可以以用这三种形式之一表示,例如:
for(int i=0;i<10;i++){
    System.out.println("i is"+i);
}

int i=0;
while (i<10){
System.our.println("i is"+i);
i++;
}是一样的,
通常如果重复次数知道,就采用for循环,例如将信息打印100次,如果不知道重复次数,就用while循环,例如读入一些数值直到读入0为止,如果在检验循环条件前需要执行循环体,就用do……while,建议采用自己觉得最自然舒服的那种。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 很给力!

查看全部评分

回复 使用道具 举报
最直白的讲:for 语句用于确定循环次数的循环,而while语句用于循环次数不确定的情况下。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
清晨的太阳 发表于 2011-11-8 10:19
最直白的讲:for 语句用于确定循环次数的循环,而while语句用于循环次数不确定的情况下。 ...

:handshake
回复 使用道具 举报
wangqing 黑马帝 2011-11-8 18:40:21
7#
柴永菲 发表于 2011-11-8 09:37
循环结构是指在满足循环条件时反复执行循环代码代码块,直到

循环条件不能满足为止。一个循环语句一般应包 ...

很全面,谢谢!
回复 使用道具 举报
王维波 黑马帝 2011-11-8 22:47:23
8#
百度上面有详细说明如下:
  while,do-while和for控制着循环,有时将其划分为“反复语句”。除非用于控制反复的布尔表达式得到“假”的结果,否则语句会重复执行下去。while循环的格式如下:


while(布尔表达式)

语句


在循环刚开始时,会计算一次“布尔表达式”的值。而对于后来每一次额外的循环,都会在开始前重新计算一次。

下面这个简单的例子可产生随机数,直到符合特定的条件为止:

//: WhileTest.java

// Demonstrates the while loop


public class WhileTest {

  public static void main(String[] args) {

    double r = 0;

    while(r < 0.99d) {

      r = Math.random();

      System.out.println(r);

    }

  }

} ///:~


它用到了Math库里的static(静态)方法random()。该方法的作用是产生0和1之间(包括0,但不包括1)的一个double值。while的条件表达式意思是说:“一直循环下去,直到数字等于或大于0.99”。由于它的随机性,每运行一次这个程序,都会获得大小不同的数字列表。


3.2.4 do-while

do-while的格式如下:


do

语句

while(布尔表达式)


while和do-while唯一的区别就是do-while肯定会至少执行一次;也就是说,至少会将其中的语句“过一遍”——即便表达式第一次便计算为false。而在while循环结构中,若条件第一次就为false,那么其中的语句根本不会执行。在实际应用中,while比do-while更常用一些。


3.2.5 for

for循环在第一次反复之前要进行初始化。随后,它会进行条件测试,而且在每一次反复的时候,进行某种形式的“步进”(Stepping)。for循环的形式如下:


for(初始表达式; 布尔表达式; 步进)

语句


无论初始表达式,布尔表达式,还是步进,都可以置空。每次反复前,都要测试一下布尔表达式。若获得的结果是false,就会继续执行紧跟在for语句后面的那行代码。在每次循环的末尾,会计算一次步进。

for循环通常用于执行“计数”任务:

//: ListCharacters.java

// Demonstrates "for" loop by listing

// all the ASCII characters.


public class ListCharacters {

  public static void main(String[] args) {

  for( char c = 0; c < 128; c++)

    if (c != 26 )  // ANSI Clear screen

      System.out.println(

        "value: " + (int)c +

        " character: " + c);

  }

} ///:~


注意变量c是在需要用到它的时候定义的——在for循环的控制表达式内部,而非在由起始花括号标记的代码块的最开头。c的作用域是由for控制的表达式。

以于象C这样传统的程序化语言,要求所有变量都在一个块的开头定义。所以在编译器创建一个块的时候,它可以为那些变量分配空间。而在Java和C++中,则可在整个块的范围内分散变量声明,在真正需要的地方才加以定义。这样便可形成更自然的编码风格,也更易理解。

可在for语句里定义多个变量,但它们必须具有同样的类型:

for(int i = 0, j = 1;

    i < 10 && j != 11;

    i++, j++)

/* body of for loop */;


其中,for语句内的int定义同时覆盖了i和j。只有for循环才具备在控制表达式里定义变量的能力。对于其他任何条件或循环语句,都不可采用这种方法。



1. 逗号运算符

早在第1章,我们已提到了逗号运算符——注意不是逗号分隔符;后者用于分隔函数的不同自变量。Java里唯一用到逗号运算符的地方就是for循环的控制表达式。在控制表达式的初始化和步进控制部分,我们可使用一系列由逗号分隔的语句。而且那些语句均会独立执行。前面的例子已运用了这种能力,下面则是另一个例子:

//: CommaOperator.java


public class CommaOperator {

  public static void main(String[] args) {

    for(int i = 1, j = i + 10; i < 5;

        i++, j = i * 2) {

      System.out.println("i= " + i + " j= " + j);

    }

  }

} ///:~


输出如下:

i= 1 j= 11

i= 2 j= 4

i= 3 j= 6

i= 4 j= 8


大家可以看到,无论在初始化还是在步进部分,语句都是顺序执行的。此外,尽管初始化部分可设置任意数量的定义,但都属于同一类型。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 兄弟,辛苦了。

查看全部评分

回复 使用道具 举报
肖瑞军 黑马帝 2011-11-8 23:04:42
9#
区别不是很大!可以等效替换的!
while是先判断后执行,如果条件不满足,则一次循环体语句也不执行。
for(表达式1;表达式2;表达式3) 第一步,计算表达式1的值。第二步,计算表达式2的值。若值为真(非0)则执行循环体一次,否则跳出循环。第三步,计算表达式3的值,转回第二步重复执行

用代码表现就是:
for ( var i:int=0; i<10; i++ ){
//do something
}
等效于
var i:int = 0;
while ( i<10 ){
//do something
i++;
}


while (条件){
//do something
}
等效于
for ( ;条件; ){
//do something
}

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
张翼 黑马帝 2011-11-9 07:43:34
10#
for循环有三个部分,循环条件变量初始值,循环条件变量最终值,循环条件变化规律,所以for把这三个变量全都给设置好了,保证了整个循环的进行;
而while呢,仅仅有循环条件变化规律,至于其他两个变量都要在循环体中设置。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马