转换后的代码与原始代码不同

时间:2017-10-30 09:15:27

标签: java decompiler

我使用.jar和已检查的代码反编译jd-gui文件,我发现它与原始.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();
    

为什么会这样?

此外,反编译代码在语法上是错误的(括号括起来?)

2 个答案:

答案 0 :(得分:2)

通过反编译获取原始代码是不可能的,因为不同的代码可能导致相同的java字节代码语句。但是,您将获得一个与原始版本执行完全相同操作的等效版本。

答案 1 :(得分:1)

反编译代码总是尝试执行与源代码相同的操作,但由于编译器的优化而以不同的方式编写。它们是一些比其他更好的反编译器,请检查article