for(;;)和while(true)的区别

JDK源码中,“死循环”有两种写法:for(;;)和while(true),

源码中多数是for( ; ; )这种形式:

编译前                     编译后 
    while (1);               mov eax,1  
                              test eax,eax 
                              je foo+23h
                              jmp foo+18h


编译前                     编译后 
    for (;;);              jmp foo+23h   

一目了然,for (;;)指令少,不占用寄存器,而且没有判断跳转,比while (1)好。

也就是说两者在在宏观上完全一样的逻辑,但是底层完全不一样,for相对于来说更加简洁明了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容