整数和整数的内存分配/引用比较

时间:2013-06-01 12:08:55

标签: java

以下内容:

String a = new String("test");
String b = "test";
System.out.println(a == b); //false

我们得到错误,因为String a是一个对象,所以a指向内存中与字符串文字b不同的位置。我希望了解这对intInteger

有何用处
Integer x = new Integer(5);
int y =5;
System.out.println(x == y); //true

我虽然x.equals(y)是真的,但x == y会因为Strings而出现错误。我们了解到,我们将ints==进行了比较,但我认为将intInteger进行比较会有所不同。为什么不是这样?

我认为在这种情况下使用==不能用于比较引用,所以我们如何做(不确定这是否实用,但我想知道)?

1 个答案:

答案 0 :(得分:3)

因为在java中装箱和取消装箱

  

将int转换为Integer,将double转换为Double,依此类推。如果   转换是另一种方式,这称为拆箱。

Autoboxing / unboxing是一个纯粹的便利功能,它允许您将基本类型的值指定为包装类的引用,反之亦然,编译器会自动添加代码以在两者之间进行转换。

Boxing and unBoxingSEE HERE ALSO