If语句中的可执行语句

Alp*_*lan 2 java

有一个我想要问的解释性代码.Sureley,下面的代码之间的差异是可以忽略的,但它描述了这一点.

在内存使用和性能方面哪一个最有效?

if( MathUtil.CalculateSin(angle) > Angles.ACUTE){
     // Something is done
    }
Run Code Online (Sandbox Code Playgroud)

要么

double angleSin = MathUtil.CalculateSin(angle);

if( angleSin > Angles.ACUTE){
// Something is done
}
Run Code Online (Sandbox Code Playgroud)

Jea*_*ard 7

这取决于您是否要重新使用变量.

  • 如果是,请使用第二种情况.
  • 如果没有使用第一种情况.

如果您不打算重新使用它,则没有理由将值存储在变量中.

编辑:

根据你的评论,似乎你主要是问这个问题的性能问题......

实际上我的问题不是关于算法,也不是我实现它的方式.我很好奇这些方法的内存使用情况,因此效率就是目的.

不要指望这两种方法在内存使用方面存在任何差异,JVM和JIT将尽可能地优化它,以便两种情况都变得相同.