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 ++ ;
while语句都可以用for改写}
//可以访问变量
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进⾏⾃定义
有⼀⽂本⽂件如下,每⾏有两个字符串/空格分开。
$
Gly G
Ala A
for line in `` do
echo $line
done
得到结果如下:Gly
G
Ala
A
============ while read line
do
echo $line
运⾏得到结果如下:Gly G
Ala A
来源于⽹络
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论