for循环:
for(初始化语句;判断条件语句;控制条件语句) {
循环语句体;
}
while循环:
初始化语句;
while(判断条件语句){
循环体语句;
控制条件语句;
}
while和for没有本质区别,也没有速度区别。在表达能力上二者完全等价。细微的区别在于for循环和while循环会在loop statement前多做一次conditional jump。do_while则不会。
《Effective Java》的编程规范,里面有一条是“尽量缩小变量的作用范围”。而for循环的优势就在于这一点上,比如for(int i=0;……),i的作用范围仅限于for循环体,但是while就不一样。while难以控制基数变量的作用于,循环体外依然有效。
所以用for循环更多的是考虑缩变量的作用范围。