首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么这会陷入无限循环?

为什么这会陷入无限循环?

提问于 2017-12-19 17:01:10
回答 2关注 0查看 463

我有以下代码:

代码语言:txt
复制
public class Tests {
代码语言:txt
复制
    public static void main(String[] args) throws Exception {
代码语言:txt
复制
        int x = 0;
代码语言:txt
复制
        while(x<3) {
代码语言:txt
复制
            x = x++;
代码语言:txt
复制
            System.out.println(x);
代码语言:txt
复制
        }
代码语言:txt
复制
    }
代码语言:txt
复制
}

我们知道他应该只写x++或者写x=x+1,但是x = x++首先应该x自己写,然后增加它。为什么x继续0作为价值?

--update

这是字节码:

代码语言:txt
复制
public class Tests extends java.lang.Object{
代码语言:txt
复制
public Tests();
代码语言:txt
复制
  Code:
代码语言:txt
复制
   0:   aload_0
代码语言:txt
复制
   1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
代码语言:txt
复制
   4:   return
代码语言:txt
复制
代码语言:txt
复制
public static void main(java.lang.String[])   throws java.lang.Exception;
代码语言:txt
复制
  Code:
代码语言:txt
复制
   0:   iconst_0
代码语言:txt
复制
   1:   istore_1
代码语言:txt
复制
   2:   iload_1
代码语言:txt
复制
   3:   iconst_3
代码语言:txt
复制
   4:   if_icmpge   22
代码语言:txt
复制
   7:   iload_1
代码语言:txt
复制
   8:   iinc    1, 1
代码语言:txt
复制
   11:  istore_1
代码语言:txt
复制
   12:  getstatic   #2; //Field java/lang/System.out:Ljava/io/PrintStream;
代码语言:txt
复制
   15:  iload_1
代码语言:txt
复制
   16:  invokevirtual   #3; //Method java/io/PrintStream.println:(I)V
代码语言:txt
复制
   19:  goto    2
代码语言:txt
复制
   22:  return
代码语言:txt
复制
代码语言:txt
复制
}

我会阅读有关说明,试图了解...

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档