以下内容:
String a = new String("test");
String b = "test";
System.out.println(a == b); //false
我们得到错误,因为String a
是一个对象,所以a
指向内存中与字符串文字b
不同的位置。我希望了解这对int
和Integer
:
Integer x = new Integer(5);
int y =5;
System.out.println(x == y); //true
我虽然x.equals(y)
是真的,但x == y
会因为Strings
而出现错误。我们了解到,我们将ints
与==
进行了比较,但我认为将int
与Integer
进行比较会有所不同。为什么不是这样?
我认为在这种情况下使用==
不能用于比较引用,所以我们如何做(不确定这是否实用,但我想知道)?
答案 0 :(得分:3)
因为在java中装箱和取消装箱
将int转换为Integer,将double转换为Double,依此类推。如果 转换是另一种方式,这称为拆箱。
Autoboxing / unboxing是一个纯粹的便利功能,它允许您将基本类型的值指定为包装类的引用,反之亦然,编译器会自动添加代码以在两者之间进行转换。