将双精度转换为单精度

5
我看过一份示例,其中使用以下代码将double类型转换为float类型:
Double.valueOf(someDouble).floatValue()

我会像这样完成它。
(float)someDouble

有使用前者的优势吗?

6
毫无意义。它创建了一个Double对象,这是一种浪费内存的行为,并调用了一个方法,在该方法中进行与你在一次操作中执行的相同类型转换。完全没有意义。 - user207421
也许那段代码的作者已经学会了应该避免使用强制类型转换,现在机械地应用这个想法。 - Jesper
1个回答

12

看一下 DoublefloatValue() 方法的实现:

/**
 * Returns the value of this {@code Double} as a {@code float}
 * after a narrowing primitive conversion.
 *
 * @return  the {@code double} value represented by this object
 *          converted to type {@code float}
 * @jls 5.1.3 Narrowing Primitive Conversions
 * @since JDK1.0
 */
public float floatValue() {
    return (float)value;
}

看起来它的行为与您的转换完全相同,因此使用它没有任何优势。


8
除了浪费地创建一个Double对象,这是一个不利之处 - user207421
1
@EJP 这是真的。 - Eran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接