gpt4 book ai didi

java - 已弃用的新 Double(double) 的替代方案

转载 作者:行者123 更新时间:2023-12-04 12:40:08 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





The constructors Integer(int), Double(double), Long(long) and so on are deprecated

(1 个回答)



create a new Integer object that holds the value 1?

(2 个回答)


去年关闭。




我正在关注 Walter Savitch 的一本名为 Absolute Java 的书。其中的示例程序包含以下几行:

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

我收到以下警告消息:

warning: [deprecation] Double(double) in Double has been deprecated



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

最佳答案

解释

您应该将其替换为:

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

来自其 Javadoc :

Deprecated.

It is rarely appropriate to use this constructor. The static factory valueOf(double) is generally a better choice, as it is likely to yield significantly better space and time performance.



一般来说, valueOf不是被迫总是返回 新品 实例。它可以利用内部缓存并重用之前创建的值,从而使其速度更快。例如,如果您创建数百个 1.0 .

笔记

您使用 Double[] 是否有特定原因?首先?如果没有,请拨打 double[]反而。与它们的对象包装器相比,原语要快得多,内存开销也更少。

那么你的代码就是:
double[] d = new double[10];
for (int i = 0; i < d.length; i++)
d[i] = d.length - i;

顺便说一句,你应该宁愿永远不要省略花括号。即使您的循环只是一行。这是很难找到的错误的一个非常常见的来源。

另外,您的变量命名不是很好。什么是 d ?试着给它起一个能反射(reflect)它实际含义的名字。赞 ages例如,如果它存储人的年龄。如果您没有特定的东西,可以使用 values .这已经比仅仅 d 更好了.特别是因为它是复数,所以很明显它是一个多值的数组。
double[] values = new double[10];
for (int i = 0; i < values.length; i++) {
values[i] = values.length - i;
}

关于java - 已弃用的新 Double(double) 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60024551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com