将双值装箱,然后立即在Java中取消装箱

时间:2015-10-01 09:38:56

标签: java integer double sonarqube

我怎样才能避免在我的代码中使用所有强制转换,以免被声纳盒装/取消装箱?

这是我的代码:

Double value = (Double) input.get(0);

int integer = new Double(value).intValue();

Double dec = Math.abs(value - (new Double(integer ).doubleValue()));

我想尽量避免像我一样投射,但我不确定我是否可以用这种方式装箱。

有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

我不确定input.get()返回什么类型,所以我假设第一次演员是必要的。您不需要在每一行上实例化新的Double对象,您只需调用其方法即可返回所需的正确类型值。

Double value       = (Double) input.get();
int    integerPart = value.intValue();
double decimalPart = Math.abs(value - integer.doubleValue());

看起来你只是想提取double的整数和小数部分,在这种情况下,这段代码更清楚地表达了意图:

Double value       = (Double) input.get();
int    integerPart = value.intValue();
double decimalPart = Math.abs(value - Math.floor(value));