gpt4 book ai didi

java - Java 中的 (Integer)y 和 new Integer(y) 有什么区别?

转载 作者:搜寻专家 更新时间:2023-10-30 19:40:13 25 4
gpt4 key购买 nike

以下有什么区别:

Integer in = (Integer)y;

Integer in = new Integer(y);

我想将 int 类型转换为 Integer 类型,反之亦然。这是我的代码:

public class CompareToDemo {

public static void main(String[] args) {
// Integer x=5;
int y=25;

System.out.println(y+" this is int variable");

Integer in = (Integer)y;

//Integer in = new Integer(y);

if(in instanceof Integer){
System.out.println(in +" this is Integer variable");
}
}
}

最佳答案

如果您只想将 int 原语转换为 Integer 对象,你有四个选择

   Integer in = (Integer)y;         // 1 explicit cast
Integer in = y; // 2 implicit cast (autoboxing)
Integer in = new Integer(y); // 3 explicit constructor
Integer in = Integer.valueOf(y); // 4 static factory method

这里最可取的方式是 2(自动装箱)。显式构造函数 (3) 不太可取,因为它可能会对性能造成一些小的影响。

此外,它们并不严格等价。考虑:

public static void main(String[] args) {
int x = 25;
Integer a = new Integer(x);
Integer b = new Integer(x);
System.out.println(a == b); // false
Integer c = Integer.valueOf(x);
Integer d = Integer.valueOf(x);
System.out.println(c == d); // true
Integer e = (Integer)x;
Integer f = (Integer)x;
System.out.println(e == f); // true
}

这是因为缓存了小整数 (details here)。

关于java - Java 中的 (Integer)y 和 new Integer(y) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38177732/

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