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反编译发生的错误?还是本来就这样呢?求大神解疑
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
编译器产生的代码,是原始代码的等价形式,所谓等价,就是相同的输入,相同的结果。注意是等价形式,而不是相等。所以编译出来的代码反编译回去和你写的不同这很正常。当然,如果不是等价的,那么可能就是反编译程序或者编译器本身的bug了(编译器的bug这个比较罕见)