与原语相比,使用包装器进行向下转换

时间:2015-01-07 15:32:08

标签: java

假设:

double x = 15d;

我应该使用哪种转换方法:

int val = (int)x;

或者:

int val = new Double(x).intValue();

一方和另一方的优点是什么?

3 个答案:

答案 0 :(得分:3)

new Double(x).intValue();似乎(通常)效率较低,但我没有任何支持。实际上,无论哪种方式都没有功能优势。但是,我发现(int)x更具可读性,这是一个显着的优势。

但最重要的是,premature optimization is the root of all evil

答案 1 :(得分:0)

我所知道的唯一区别是,在返回一个整数值(调用Double)之前,第二个必须创建类.intValue()的新对象。

您提到的第一个不必在返回整数值之前创建新对象。

这就是为什么我个人使用第一个:

int val = (int) x;

答案 2 :(得分:0)

在功能上,它们是等价的(产生相同的结果)。第二个是浪费(因为对象分配),而且可读性较差。没有理由使用它来支持(int) x

您也可以这样做:Integer.parseInt(String.format("%.0f", x)),它也可以。仅仅因为你可以做某事,并不意味着你应该做。