for循环、while循环区别详解程序员

 理解一:

1、while适合用于状态变化控制,说高大上点就是while适合做状态机,而for仅仅是为了循环而循环

2、另外一个区别,for循环一般都是这么用的,for(int i=xx;i<xx;i++);重点是关于循环控制变量i是在for中声明的(不是说不可以声明在for外面,只是一般都是这么用),这样的话,在for循环结束后,i会被释放,可以优化内存空间,如果你在8051单片机上写过程序,你的内存只有2k-8k,你会格外珍惜内存的使用;而相对来说,while循环跳出后控制变量不会被释放,还可以继续使用

3、和一有点类似,通常刚学程序的时候会告诉你应尽量避免死循环,但是慢慢你会发现会有很多

while(1){。。。。};比如说侦听,我们需要一个死循环来不断进行侦听,然后发现有接入就开辟一个新的线程去处理(类比FTP机制)。

 

理解二:

一个需求:使用for循环和while循环都可以去实现,那么到底两者之间有什么区别? 

从内存角度考虑: 

局部变量在栈内存中存在,当for循环语句结束,那么变量会及时被gc(垃圾回收器)及时的释放掉,不浪费空间 

如果使用循环之后还想去访问循环语句中控制那个变量,使用while循环

从应用场景角度考虑:

如果一个需求明确循环的次数,那么使用for循环(开发中使用for循环的几率大于while循环) 

如果一个需求,不知道循环了多少次,使用while循环 

*举例:吃葡萄!  

public class WhileDemo4 {

public static void main(String[] args) {

//使用for循环

for(int x = 1 ; x <=5 ; x++) {

System.out.println(“我爱高圆圆”);

}

//访问for循环中控制的那个变量x

// System.out.println(x);

 

//使用while循环

int x = 1 ;

while(x<=5) {

System.out.println(“我爱高圆圆”); x ++ ;

}

//可以访问变量

System.out.println(x);

}

}

 

理解三:

做循环的时候,首先要把思路理清楚,回答四个问题:

(1)初始化条件?

(2)控制循环的条件?

(3)反复做的事?

(4)怎样进入下一循环?

eg:对1到100求和

(1)初始化条件:sum=0;num=1

(2)控制循环的条件:num<=100

(3)反复做的事:sum = sum  + num(或sum += num)

(4)怎样进入下一循环:num++

这样就能轻松写出循环

int sum = 0;

int num = 1;

while(num <= 100) {

    sum+=num;

    num++;

}

用do……while改写

int sum = 0;

int num = 1;

do {     sum += num;     num++;

}while(num<=100)

用for循环改写

int sum = 0;

for(int num=1; num<=100;num++){

    sum += num;

}

for循环是比较难理解的,但是我们可以将num=1; num<=100看作num的取值范围为[1,100],步长为1。这样就有利于for循环的理解。

综上,三种循环是可以替换的,但是三种循环也有一定的差异:

for循环适用于知道范围的情况(或知道循环次数的情况),当循环次数(或范围)不确定时用while循环或do……while循环。

while循环和do…….循环,当第一次进入循环就不满足条件时,while循环不做,do……while执行一次。其他情况输出结果是一样的。 

 

区别:

while循环:默认按行(回车符“/r”、换行符“/n”)分割文件

for循环:默认按照任意空白字符(如:空格、tab)等分割文件,可以使用IFS进行自定义

有一文本文件如下,每行有两个字符串/空格分开。
$ cat list.txt 
Gly G
Ala A

for line in `cat list.txt`
do
echo $line
done
得到结果如下:

Gly
G
Ala
A

============
while read line
do 
echo $line
done list.txt

运行得到结果如下:

Gly G
Ala A

来源于网络

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/1800.html

(0)
上一篇 2021年7月15日
下一篇 2021年7月15日

相关推荐

发表回复

登录后才能评论