Len*_*via 9 java wrapper deprecated
我正在关注 Walter Savitch 写的一本名为 Absolute Java 的书。其中的示例程序包含以下几行:
Double[] d = new Double[10];
for (int i = 0; i < d.length; i++)
d[i] = new Double(d.length - i);
Run Code Online (Sandbox Code Playgroud)
我收到以下警告消息:
警告:[弃用] Double 中的 Double(double) 已弃用
我相信警告消息告诉我替换构造函数的使用,因为它已经被弃用,那么我应该用什么替换它?
Zab*_*uza 17
您应该将其替换为:
d[i] = Double.valueOf(d.length - i);
Run Code Online (Sandbox Code Playgroud)
来自它的Javadoc:
已弃用。
使用这个构造函数很少是合适的。静态工厂
valueOf(double)通常是更好的选择,因为它可能会产生明显更好的空间和时间性能。
一般来说,valueOf并不强制总是返回一个新实例。它可以利用内部缓存并重用之前创建的值,这使得速度更快。例如,如果您创建数百个1.0.
Double[]您首先使用 a 有什么具体原因吗?如果没有,double[]那就去吧。与对象包装器相比,原语速度更快,内存开销更少。
那么你的代码就是:
double[] d = new double[10];
for (int i = 0; i < d.length; i++)
d[i] = d.length - i;
Run Code Online (Sandbox Code Playgroud)
顺便说一句,您最好不要省略花括号。即使你的循环只有一行。这是很难发现的错误的常见来源。
另外,你的变量命名也不是很好。什么是d?尝试给它一个反映其实际含义的名称。例如,就像ages它存储人的年龄一样。如果您没有特定的东西,也许可以使用values. 这已经比仅仅好得多了d。特别是因为它是复数,所以很明显它是多个值的数组。
double[] values = new double[10];
for (int i = 0; i < values.length; i++) {
values[i] = values.length - i;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17352 次 |
| 最近记录: |