Java 不推荐使用的新Double(Double)的备选方案

Java 不推荐使用的新Double(Double)的备选方案,java,wrapper,deprecated,Java,Wrapper,Deprecated,我在看沃尔特·萨维奇写的一本书《绝对Java》。其中的示例程序包含以下行: Double[] d = new Double[10]; for (int i = 0; i < d.length; i++) d[i] = new Double(d.length - i); 我得到了以下警告信息: 警告:[弃用]已弃用Double中的Doubledouble 我相信警告消息告诉我要替换构造函数的使用,因为它已经被弃用了,所以我应该用什么来替换它呢?来自Java 9构造函数方法 不赞成。

我在看沃尔特·萨维奇写的一本书《绝对Java》。其中的示例程序包含以下行:

Double[] d = new Double[10];
for (int i = 0; i < d.length; i++)
    d[i] = new Double(d.length - i);
我得到了以下警告信息:

警告:[弃用]已弃用Double中的Doubledouble


我相信警告消息告诉我要替换构造函数的使用,因为它已经被弃用了,所以我应该用什么来替换它呢?

来自Java 9构造函数方法

不赞成。使用此构造函数很少是合适的。静态出厂值Double通常是一个更好的选择,因为它可能产生显著更好的空间和时间性能。 构造新分配的表示基元双参数的双对象

因此,替换为:

Double.valueOf(d.length - i)

来自Java9构造函数的方法是

不赞成。使用此构造函数很少是合适的。静态出厂值Double通常是一个更好的选择,因为它可能产生显著更好的空间和时间性能。 构造新分配的表示基元双参数的双对象

因此,替换为:

Double.valueOf(d.length - i)
解释 您应将其替换为:

d[i] = Double.valueOf(d.length - i);
从其:

不赞成

使用此构造函数很少是合适的。静态出厂值Double通常是一个更好的选择,因为它可能产生显著更好的空间和时间性能

通常,valueOf并不总是强制返回新实例。它可以利用一个内部缓存并重用以前创建的值,这使它更快。例如,如果您创建了数百个1.0

笔记 首先使用Double[]有什么具体原因吗?如果不是,则改为使用double[]。与对象包装器相比,原语速度更快,内存开销更少

那么您的代码就是:

double[] d = new double[10];
for (int i = 0; i < d.length; i++)
    d[i] = d.length - i;
解释 您应将其替换为:

d[i] = Double.valueOf(d.length - i);
从其:

不赞成

使用此构造函数很少是合适的。静态出厂值Double通常是一个更好的选择,因为它可能产生显著更好的空间和时间性能

通常,valueOf并不总是强制返回新实例。它可以利用一个内部缓存并重用以前创建的值,这使它更快。例如,如果您创建了数百个1.0

笔记 首先使用Double[]有什么具体原因吗?如果不是,则改为使用double[]。与对象包装器相比,原语速度更快,内存开销更少

那么您的代码就是:

double[] d = new double[10];
for (int i = 0; i < d.length; i++)
    d[i] = d.length - i;

您的问题在Javadoc中得到了回答。这个问题问得很好,但只需查找Javadoc即可回答。这是在SO发布之前普遍预期的情况。所以我不得不投反对票,因为缺乏研究。请看,谢谢。您的问题在Javadoc中得到了回答。这个问题问得很好,但只需查找Javadoc即可回答。这是在SO发布之前普遍预期的情况。所以我不得不投反对票,因为缺乏研究。请看,谢谢。是的,使用Double有一个特定的原因,因为作者试图演示一个程序,该程序将使用Double类实现的可比较接口对任何类型的数据类型进行排序。很公平,然后使用Double[]:@Zabuza,但您可以使用d[i]=Double d.length-i;,通过自动装箱隐式使用valueOf。是的,使用Double有一个特定的原因,因为作者试图演示一个程序,该程序将使用Double类实现的可比较接口对任何类型的数据类型进行排序。很公平,然后坚持使用Double[]:@Zabuza,但您可以使用d[i]=Double d.length-i;,通过自动装箱隐式使用valueOf。