lvgo

磕磕绊绊、点点滴滴

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

在标准的语义上是完全等价的;
那我们就来看一下在jvm级别上是不是等价的;

for(;;){}的编译结果

flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=0, locals=1, args_size=1
         0: goto          0
      LineNumberTable:
        line 3: 0
      StackMapTable: number_of_entries = 1
        frame_type = 0 /* same */

while(true){}的编译结果

flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=0, locals=1, args_size=1
         0: goto          0
      LineNumberTable:
        line 3: 0
      StackMapTable: number_of_entries = 1
        frame_type = 0 /* same */

看起来没有什么不同,实际上也是一样.没有什么不同
但是 while(true)在C和C ++(C#?)的最高设置的编译警告。
也许对于Java来说不是一个问题,但是如果你有时候用其他语言写的话,for(;;)是一个更好的开发习惯。

最后再说一下,两者使用没有区别,实践中使用哪个自己喜欢就好.

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_34344123/article/details/79049593
个人分类: 编程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭