Java 将基本数据类型转换为对象时,是否应强制转换或创建新对象?

Java 将基本数据类型转换为对象时,是否应强制转换或创建新对象?,java,casting,Java,Casting,这可能会打破讨论与回答的规则,但我认为有一种更可取的做事方式 -- 假设您需要将基本数据类型转换为对象。让我们以int-->Integer为例。您可以通过铸造或直接制作新对象来完成此操作。例如: int a = 5; int b = 10; Integer c = new Integer(a); Integer d = (Integer) b; 做这件事最好的方法是,a-->c还是b-->d?我怀疑它们执行相同的操作,那么通常使用哪一种 提前谢谢。以上都没有。 使用Integer.valueO

这可能会打破讨论与回答的规则,但我认为有一种更可取的做事方式

--

假设您需要将基本数据类型转换为对象。让我们以
int-->Integer
为例。您可以通过铸造或直接制作新对象来完成此操作。例如:

int a = 5; int b = 10;
Integer c = new Integer(a);
Integer d = (Integer) b;
做这件事最好的方法是,
a-->c
还是
b-->d
?我怀疑它们执行相同的操作,那么通常使用哪一种

提前谢谢。

以上都没有。 使用
Integer.valueOf
,因为它可以通过缓存频繁请求的值来显著提高空间和时间性能

Integer.valueOf

返回一个{@code Integer}实例,该实例表示指定的 {@code int}值。如果未找到新的{@code Integer}实例 如果需要,通常应优先使用该方法 构造函数{@link#Integer(int)},因为这种方法很可能 通过 缓存频繁请求的值

但是使用
自动装箱
,编译器将自动为您执行此操作

Integer i = 1;
哪个是语法上的糖

Integer i = Integer.valueOf(1);
以上都没有。 使用
Integer.valueOf
,因为它可以通过缓存频繁请求的值来显著提高空间和时间性能

Integer.valueOf

返回一个{@code Integer}实例,该实例表示指定的 {@code int}值。如果未找到新的{@code Integer}实例 如果需要,通常应优先使用该方法 构造函数{@link#Integer(int)},因为这种方法很可能 通过 缓存频繁请求的值

但是使用
自动装箱
,编译器将自动为您执行此操作

Integer i = 1;
哪个是语法上的糖

Integer i = Integer.valueOf(1);

以上都没有。在这个场景中,您可以依靠它来处理类型转换

这将使您的代码如下所示:

int a = 5;
int b = 10;
Integer c = a;
Integer d = b;

以上都没有。在这个场景中,您可以依靠它来处理类型转换

这将使您的代码如下所示:

int a = 5;
int b = 10;
Integer c = a;
Integer d = b;
假设您需要将基本数据类型转换为对象。 让我们以int-->整数为例。你可以通过铸造或铸造来实现这一点 直接创建一个新对象。例如:

int a = 5; int b = 10;
Integer c = new Integer(a);
Integer d = (Integer) b;
a-->c还是b-->d,哪种方法更好?我怀疑他们 执行相同的操作,那么通常使用哪种操作

版本5和更高版本中的Java编译器执行自动装箱,以在原语值与其对应的装箱对象之间进行转换。自动装箱模糊但不会消除基本体值和对象之间的区别

不鼓励使用以下行:

Integer c = new Integer(a);
这是因为始终会创建一个新对象,并防止重用缓存的整数对象

这一行由Java编译器转换:

Integer d = (Integer) b;
相反,这条线变成了

Integer d = Integer.valueOf(b);
如果您在赋值中完全省略了强制转换,那么您将得到这段代码。使用
valueOf()
函数将基元值装箱到其相应的对象中。这是将原语值分配给对象的首选方法,因为这允许JVM重用频繁缓存的对象

假设您需要将基本数据类型转换为对象。 让我们以int-->整数为例。你可以通过铸造或铸造来实现这一点 直接创建一个新对象。例如:

int a = 5; int b = 10;
Integer c = new Integer(a);
Integer d = (Integer) b;
a-->c还是b-->d,哪种方法更好?我怀疑他们 执行相同的操作,那么通常使用哪种操作

版本5和更高版本中的Java编译器执行自动装箱,以在原语值与其对应的装箱对象之间进行转换。自动装箱模糊但不会消除基本体值和对象之间的区别

不鼓励使用以下行:

Integer c = new Integer(a);
这是因为始终会创建一个新对象,并防止重用缓存的整数对象

这一行由Java编译器转换:

Integer d = (Integer) b;
相反,这条线变成了

Integer d = Integer.valueOf(b);

如果您在赋值中完全省略了强制转换,那么您将得到这段代码。使用
valueOf()
函数将基元值装箱到其相应的对象中。这是将原语值分配给对象的首选方法,因为这允许JVM重用频繁缓存的对象。

取决于它的使用方式。大多数时候,只要我需要一个
Integer
,我就会使用
int
,并让Java自动将其装箱。阅读java中的自动装箱。您既不需要强制转换,也不需要新的<代码>整数foo=3取决于它的使用方式。大多数时候,只要我需要一个
Integer
,我就会使用
int
,并让Java自动将其装箱。阅读java中的自动装箱。您既不需要强制转换,也不需要新的<代码>整数foo=3