1.for(;;) 与 while(true) 的 区别

经过上一次的编辑,我发现csdn的markdown太难看了,所以还是用html的吧。

    1.java学习的过程中突然间想到的问题,之前在用的时候并没有太细去想,只是知道这两者能够表示无限循环,但两者可能内部有一些区别。所以也就去查了一下。

         a.先引用一下一篇博客 http://fuliguo.iteye.com/blog/2229044 ,博主讲的很细致了,总结就是,for(;;)和while(true)在转为class文件之后,他们的字节码文件是一样的,所以使用只看个人习惯。

         b.当然如果只是这样我也不会写这篇东西了。

         c.在c语言中while(1)等同于java中的while(true),for(;;)的使用两者是一样的,而C语言中while(1)和for(;;)是有区别的:

              while(1)在编译后:

<span style="font-family:FangSong_GB2312;font-size:12px;">mov eax,1  
test eax,eax 
je foo+23h
jmp foo+18h</span>

              for(;;)在编译后:

<span style="font-family:FangSong_GB2312;font-size:12px;">jmp foo+23h</span>

区别非常明显,for(;;)在c语言中指令较少,也能够节省内存,没有判断跳转,是比while(1)更好的无限循环。

         d.当然我并不知道在java中while(true)和for(;;)是否也有这样类似的差别,但上一篇博客中写的也是有根有据的

         e.因此结合两方来说,我更支持使用for(;;)来做这个无限循环。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值