次の方法を検討してください。
private static long maskAndNegate(long l) {
int numberOfLeadingZeros = Long.numberOfLeadingZeros(l)
long mask = CustomBitSet.masks[numberOfLeadingZeros];
long result = (~l) & mask;
return result;
}
メソッドは次のように省略できます。
private static long maskAndNegate(long l) {
return (~l) & CustomBitSet.masks[Long.numberOfLeadingZeros(l)];
}
これら 2 つの表現は、実際の実行時間において等しいでしょうか? 言い換えれば、Java コンパイラーは、読みやすさとデバッグのために配置した余分な変数の不要な定義を最適化して除去するでしょうか?