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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小白 黑马帝   /  2012-1-18 15:20  /  4916 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

for 和 wihle 那个效率高些

评分

参与人数 1技术分 +1 收起 理由
admin + 1 纠结这个的问题,意义不大

查看全部评分

13 个回复

倒序浏览
for和while的效率几乎差不多,只是两者的侧重点不同,for一般是知道循环次数,对程序有定量的循环控制。而while则是侧重条件循环,是对程序循环的定性控制。当然两者所实现的功能类似,在某些情况下可以相互替换使用。

评分

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

查看全部评分

回复 使用道具 举报
for的效率确实比while的高些,因为while每次循环都会判断一下条件是否符合条件,所以会慢一些,当然了,很短的时间,人是无法分辨出来的。

评分

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

查看全部评分

回复 使用道具 举报
虽然我个人习惯认为for效率要高于while,但是权威测试结果:【Java语言】while与for执行效率对比: 经查看class文件反编译指令发现,Java中执行for循环与执行while循环所需的指令数是一样的,二者执行效率相同。请参考http://www.tsaccp.com/ShowStudy.aspx?ID=208

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 房宝彬 于 2012-1-18 22:15 编辑
张冬冬 发表于 2012-1-18 16:41
for的效率确实比while的高些,因为while每次循环都会判断一下条件是否符合条件,所以会慢一些,当然了,很 ...


这么理解我觉得不靠谱,for循环里的条件表达式也是每次循环之后都判断下一次是否继续循环。比如 for(int a=1;a<10;a++)

评分

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

查看全部评分

回复 使用道具 举报
快慢先不说,不过有一个好处,for循环里面的初始化的变量会随着循环结束而结束,所以外国人在比较严谨的情况下比较喜欢用for循环。

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
admin + 1
最初的理想 + 1

查看全部评分

回复 使用道具 举报
魏腾飞 黑马帝 2012-1-19 12:14:49
7#
在java里个人还是喜欢用for循环,首先是减少内存空间浪费。如果是while循环,实现其循环要开辟一个变量,而且持续时间长于循环时间;但是在for循环中开辟变量空间后循环结束,此变量消失。记得在学习C语言和数构的时候经常用for循环。

评分

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

查看全部评分

回复 使用道具 举报
沈样 黑马帝 2012-1-19 19:17:07
8#
这两个循环不能考虑他们的效率,只要考虑他们所用的场所就行,for只要用来是确定次数的,while只要是条件
回复 使用道具 举报
for循环里的条件表达式也是每次循环之后都判断下一次是否继续循环。比如 for(int a=1;a<10;a++)
回复 使用道具 举报
李文 黑马帝 2012-1-20 10:39:20
10#
我觉得各有利弊吧,这个可以依代码而定,并没有哪个好哪个不好之说吧
回复 使用道具 举报
         众所周知,while和for都有初始化值,都有判断语句,都有改变变量的语句,它们的效率可以说不分伯仲。
     但因跟据不同特点因地制宜,当循环的次数已知时最好使用for循环,当循环次数不知时使用while循环。当循环次数很大的时候,比如1到2的n次方时,选用while循环再break跳出比用for循环来执行要有效率.
       选择那种循环表达式考虑效率的因素不大,循环的次数应该是影响效率的决定性因素,所以我们更多的要关注于如何减少循环次数。比如说在嵌套循环中,哪个作为外循环,哪个作为内循环,这里就有比较大的效率差别。
    循环的选择应由我们的目的决定。这三种表达式虽然都是用来执行循环,但是潜在的还是有点微小的差别。for更通用一点,而且灵活性也强一点。while先判断是否满足条件,然后在决定是否循环。do...while也执行一次,然后在决定是否再循环。准确把握这些表达式的“潜台词”才是正确选择的关键。
    由于for的形式比较规范,所以比较容易理解。很多书中都推荐尽量用for形式的循环。这样写出的代码更容易读。

评分

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

查看全部评分

回复 使用道具 举报
想进黑马或者不想进,但如果你想要学java那我见意你学张孝祥老师的java基础视频,看完了你就知道哪个效率高了,而且是明白为什么哪个效率高!!!

评分

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

查看全部评分

回复 使用道具 举报
王杰 黑马帝 2012-1-22 17:53:38
13#
如果用于判断的条件比较复杂,那么用while比较高效,但是如果判断的条件比较简单或适合for句型,那么用for比较好,如果硬要用while,可能适得其反.虽然他们都是共同的.
简单的说,在不知道用什么的时候,就看条件的格式更适合哪一种语句,用适合的就行了.

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 任增涛 于 2012-2-4 14:43 编辑

我觉得这个不好说,while,肯定能转化为for,但是大多得在加一个,或多个变量,但是这个变量最后会被收回。for就是复杂多了,for有时候要想转化成while那就复杂了,得往while里加好多东西,注意:这个时候while里的变量是不回收的。
所以:我们如果编译复杂的循环,我觉得肯定是for更节约内存.但是如果编译简单的或者不用太多控制的循环:如简单死循环,那么while就有了它的优势。
当然,简单和复杂是有个度的。如果你真要想严谨的话,就像上面那个哥们说的,用for合适。
个人意见,希望对你有帮助

评分

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

查看全部评分

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