以下有什么区别:
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/