反编译代码与原始代码不同
decompiled code is different from original code
我使用 jd-gui
反编译了一个 .jar
文件并检查了代码,我发现它与原始 .java
文件不同。
原码
if ( total != 0 ) {
result[ i ] = bdResult.multiply( bdItem ).divide( bdTotal, 0,
RoundingMode.DOWN ).setScale( 0, RoundingMode.DOWN ).intValue();
}
反编译代码
if (total == 0)
continue;
result[i] = bdResult.multiply(bdItem).divide(bdTotal, 0,
RoundingMode.DOWN).setScale(0, RoundingMode.DOWN).intValue();
为什么会这样?
此外,反编译后的代码在语法上似乎是错误的(大括号在哪里?)
不可能通过反编译得到原始代码,因为不同的代码可能导致相同的java字节代码语句。但是,您将获得一个等效版本,它执行与原始版本完全相同的操作。
反编译代码总是试图做与源代码相同的事情,但由于编译器的优化而以不同的方式编写。他们是一些比其他更好的反编译器,检查 article
我使用 jd-gui
反编译了一个 .jar
文件并检查了代码,我发现它与原始 .java
文件不同。
原码
if ( total != 0 ) { result[ i ] = bdResult.multiply( bdItem ).divide( bdTotal, 0, RoundingMode.DOWN ).setScale( 0, RoundingMode.DOWN ).intValue(); }
反编译代码
if (total == 0) continue; result[i] = bdResult.multiply(bdItem).divide(bdTotal, 0, RoundingMode.DOWN).setScale(0, RoundingMode.DOWN).intValue();
为什么会这样?
此外,反编译后的代码在语法上似乎是错误的(大括号在哪里?)
不可能通过反编译得到原始代码,因为不同的代码可能导致相同的java字节代码语句。但是,您将获得一个等效版本,它执行与原始版本完全相同的操作。
反编译代码总是试图做与源代码相同的事情,但由于编译器的优化而以不同的方式编写。他们是一些比其他更好的反编译器,检查 article