开发者社区> 问答> 正文

java for循环里的变量反编译出问题

for(int i=0;i<10;i++){
int k = 10;
}
编译出的class文件,用jd-gui反编译出来的java文件,结果变成了
for(int i=0;i<10;i++){
i = 10;
}
然后如果是
for(int i=0;i<10;i++){
int k = 10;
System.out.println(k);
}
则反编译出来的就是
for(int i=0;i<10;i++){
int k = 10;
System.out.println(k);
}
到底怎么回事呢?是jd-gui反编译发生的错误?还是本来就这样呢?求大神解疑

展开
收起
蛮大人123 2016-02-26 10:52:01 2691 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    编译器产生的代码,是原始代码的等价形式,所谓等价,就是相同的输入,相同的结果。注意是等价形式,而不是相等。所以编译出来的代码反编译回去和你写的不同这很正常。当然,如果不是等价的,那么可能就是反编译程序或者编译器本身的bug了(编译器的bug这个比较罕见)

    2019-07-17 18:48:01
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载