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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯国强 中级黑马   /  2013-12-14 08:53  /  2049 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在for与while两种循环中,while循环能实现的操作,for都能实现吗?两个有什么相同点和不同点?

评分

参与人数 1黑马币 +1 收起 理由
乔兵 + 1

查看全部评分

11 个回复

倒序浏览
对于循环次数已知的循环用for比较方便,对于循环次数未知的循环用while比较方便,其实它俩的作用是一样的。
回复 使用道具 举报
while和for是可以实现等价转换的。只是不同的条件时会选用比较好思考的方式来选用while和for
回复 使用道具 举报
while与for可以进行互换
区别:如果需要自定义变量控制循环次数,建议使用for。因为for循环完毕,变量在内存中释放。
回复 使用道具 举报
Y_Y 中级黑马 2013-12-14 10:00:58
报纸
第一种 while循环
while(布尔表达式)
{
...
}
第二种  do... while()循环
do
{
...
}
while(布尔表达式);
第三种  for(初始值;条件;步进)
{
...
}
以求0-100之间的和为例
第一种循环代码的主方法
public static void main(String [] args)
{
    int i = 0;
    int sum = 0;
while(i <= 100)
{
    sum +=i;
    i +=1;
}
System.out.println("The result is sum:"+sum);
}
第二种循环代码的主方法
public static void main(String [] args)
    {
int i = 0;
int sum = 0;
do
{
sum +=i;
i +=1;
}
while(i<=100);
    System.out.println("The result sum :"+sum );
    }
第三种循环的代码的主方法
public static void main(String [] args)
{
int sum = 0;
for(int i = 0 ;i<=100;i++ )
{
sum +=i;
}
System.out.println("The result sum:"+sum);
}
相同点:
在这三个循环中 初始的值都是相同int i = 0;int sum = 0;
布尔表达式的条件都是相同的 i<=100;
在循环内部的主要执行代码相同都是 sum+=i;i+=1;
在for循环中的i++等价于i+=1;
不同点:
while 与  do... while()
这两个方法表面看上去差不多,但是执行的时候会有很大的区别,while先判断条件(布尔表达式)如果为true,
则执行,否则跳出循环;do... while()循环,先不进行判断条件,在do{}里面先执行一次,在接下来判断while(布尔表达式);如果布尔表达式为true,则继续循环执行,否则跳出循环,执行否面的代码。
对于for()循环,是最受人们欢迎的一种循环,表面看上去与其他两种有很大的区别,但是实质相同。
for循环的执行过程:
执行初始变量;执行条件判断,如果为true,执行for循环里面的代码,如果为假,则退出循环,执行循环后面的代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
大体上是一样的,一般while能实现的for也能。只不过for更常用写,比如说操作array的时候,for用起来比while要好!
回复 使用道具 举报
A:for
                        for(初始化条件;判断条件;控制条件)
                        {
                                循环体;
                        }

                        执行流程:
                                a:先执行初始化条件;
                                b:执行判断条件
                                c:根据判断条件的返回值:
                                        true:执行循环体。
                                        false:就结束循环。
                                d:最后执行控制条件。返回到b继续。

                B:while
                        初始化条件;
                        while(判断条件)
                        {
                                循环体;
                                控制条件;
                        }
                       
                        执行流程:
                                a:先执行初始化条件;
                                b:执行判断条件
                                c:根据判断条件的返回值:
                                        true:执行循环体。
                                        false:就结束循环。
                                d:最后执行控制条件。返回到b继续。
while循环和for是可以等价转换的。
                区别:
                        初始化条件的变量在for结束,以后是不能使用的。
                        而while结束后是可以使用的。

                        如果这个变量仅仅是控制次数的,建议使用for循环。
                        因为这样,for结束,这个变量就结束,效率高。

                什么时候用for,什么时候用while?
                        如果是控制范围,最好用for。
                        如果范围不明确,用while。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
//while用于循环语句,而if用于判断和分支语句。由于你并没有指明是什么程序,只能泛泛而谈了。if 语句中,常用格式为:if(判断条件){执行语句}上面的结构,只是进行一次判断。
//While(判断条件)do{执行语句},先进行判断,而运行执行语句。执行语句运行完毕,自动返回继续判断while中的条件是否符合,符合的话,继续运行执行语句,不符合,则退出循环。
在同步问题里

public synchronized void out()       
        {               
              使用if就判断一次就等待后 就继续下面代码了 。而while判断一次后仍继续判断 符合的话才执行
                //if(!flag)
                while(!flag)
                {
                        try {
                                wait();
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                }
                System.out.println(Thread.currentThread().getName()+".....消费者........"+this.name);
                flag = false;
                //this.notify();
                //全部唤醒
                this.notifyAll();
        }


评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
松子 中级黑马 2013-12-14 12:26:32
9#
两者可以等价转换的。
当范围比较明确的时候,用for,比如:求1到10的和,范围很明确,用for比较好;
当范围不明确的时候,用while,比如:一张厚度为0.01米的纸,折叠多少次才能形成珠穆朗玛峰8848米的高度,这里的多少次是不明确的,所以用while。
注意的是:变量只在他定义的范围内有效。
               用for循环的时候,一般是把初始化变量定义在for里面,那么一旦for循环结束,这个变量就从栈内存中释放,后面的程序中不能再用了;
               用while循环的时候,一遍是把初始化变量定义在while循环外面,那么在while循环结束后,这个变量还可以使用。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
恩恩 中级黑马 2013-12-14 13:33:17
10#
两个循环的是可以等价的,没有什么区别,只是看你自己的想法了,不过for一般比较常用,因为for循环使用完毕后,里面的临时变量就释放内存了。而while循环则不会,所以一般建议使用for循环。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
欢欢 高级黑马 2013-12-14 13:47:15
11#
for(int x=0; x<10; x++)
{
          System.out.println("x");
}
for里面的局部变量x,在for的这个大括号执行完就弹栈了,就不存在了。

while(x!=0)
{
          System.out.println("x");
}
while括号中的这个变量x范围要大一点,它在大括号执行完仍然存在。

实际上for和while的功能一样,for能实现的功能用while也能实现。
当局部变量仅仅作为增量使用时,我们一般用for;反之用while。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
末末 中级黑马 2013-12-14 14:04:26
12#
for适合用于循环次数已定的情况,而while适合用于循环次数不定的时候,它们之间可以互相转换用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马