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(;;)来做这个无限循环。

你可能感兴趣的:(java)