偶然看到的反编译后代码和源码不一致想到的

今天修改了之前写的springboot starter中的源码,并deploy到maven私库后,另一个工程B更新了代码,在工程B中找到了class文件,打了断点准备调试,忽然发现idea反编译后的代码跟我写的源码有个明显的结构性差异:
下图是我写的代码,注意userName变量的定义位置。

9421628154012_.pic_hd.jpg

下图是反编译的代码,注意userName变量的作用域被提升了


9411628154000_.pic_hd.jpg

当时觉得很奇怪,后来忽然想到好像在哪里看到过编译优化,翻了一下周志明老师的经典著作 深入理解java虚拟机,果然找到了答案

9431628155948_.pic.jpg

这个应该就是编译优化中的全局代码调整做的事情了。

你可能感兴趣的:(偶然看到的反编译后代码和源码不一致想到的)