当前位置: 首页 > 面试题库 >

不建议使用构造函数Integer(int),Double(double),Long(long)等

蔚丰
2023-03-14
问题内容

在工作时,我得到了警告

The constructor Integer(int) is deprecated

而且我找不到在线替代构造函数/解决方案。我该如何解决这个问题?

更新

对于其他原始包装器类型的构造函数,我将收到类似的警告;例如

The constructor Boolean(boolean) is deprecated
The constructor Byte(byte) is deprecated
The constructor Short(short) is deprecated
The constructor Character(char) is deprecated
The constructor Long(long) is deprecated
The constructor Float(float) is deprecated
The constructor Double(double) is deprecated

是否对这些类适用相同的解决方案Integer


问题答案:

您可以使用

Integer integer = Integer.valueOf(i);

从构造函数的javadoc中:

不推荐使用。很少适合使用此构造函数。通常,静态工厂valueOf(int)是更好的选择,因为它可能会产生明显更好的空间和时间性能。构造一个新分配的Integer对象,该对象表示指定的int值。

主要区别在于,valueOf由于Integer缓存了小型实例,因此您将不会总是获得新实例。

所有原始包装类型的(BooleanByteCharShortIntegerLongFloatDouble)都采用了相同的模式。通常,替换为:

    new <WrapperType>(<primitiveType>)

    <WrapperType>.valueOf(<primitiveType>)

(请注意,上面提到的缓存行为随类型和Java平台而有所不同,但是尽管存在这些差异,Java 9+弃用仍然适用。)



 类似资料:
  • 考虑此代码段: 在我的机器上运行这个会打印两个转换的。但是和只能是吗? 据我所知,这是一个扩展的原语转换,规范中说: 拓宽的基元转换不会丢失有关数值的整体大小的信息。 以及 将int或long值加宽为float或将long值加宽为double可能会导致精度损失 据我所知,上述规范意味着将始终成为,但可以转换为其他内容(例如或类似内容)。我的规格解释正确吗?

  • 我很难确定何时使用int、double和long。 我正在计算整数的幂,只要提供的幂不是负数,就返回结果。 对于作业,我需要使用以下代码开始: 以下是我的想法: 我知道我弄乱了int、double或long的使用,但我不知道如何修复它。

  • 问题内容: 有时我看到API正在使用或或或,但我不知道如何做出决定? 我什么时候应该选择什么? 问题答案: 是的形式,是的对象形式。 在采用64位。在使用32位,所以只能容纳人数达到±2十亿(-2 31到2 31 -1)。 您应该使用和,除非需要使用从继承的方法,例如。方法通常使用带框(-wrapped)版本,因为它们需要适用于任何版本,并且基本类型(例如或)不是。 另一个区别是,and 是 按值

  • 描述 (Description) C库函数double modf(double x, double *integer)返回小数部分(小数点后的部分),并将整数设置为整​​数分量。 声明 (Declaration) 以下是modf()函数的声明。 double modf(double x, double *integer) 参数 (Parameters) x - 这是浮点值。 integer -

  • 描述 (Description) C库函数long int labs(long int x)返回long int labs(long int x)的绝对值。 声明 (Declaration) 以下是labs()函数的声明。 long int labs(long int x) 参数 (Parameters) x - 这是整数值。 返回值 (Return Value) 此函数返回x的绝对值。 例子

  • 问题内容: 我已经看到了javascript中最奇怪的事情之一。服务器端(弹簧): 我返回一个长值,并: 它将长整数表示为“ 793548328091516900”,将后两位数字(实际上四舍五入)为0。当我从任何浏览器的地址栏中发出GET请求时,数字均正确表示;因此,我认为这是一个js问题。 从服务器返回一个字符串而不是long并使用以下命令处理它: 显然是一个解决方案。但是我不是很幸运,我必须处