【问题标题】:Memory allocation/reference comparison for ints and Integers [duplicate]整数和整数的内存分配/参考比较[重复]
【发布时间】:2013-05-28 04:13:43
【问题描述】:

以下内容:

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 进行比较会有所不同。为什么不是这样?

我假设在这种情况下使用== 将无法用于比较参考,那么我们将如何做(不确定这是否实用,但我想知道)?

【问题讨论】:

    标签: java


    【解决方案1】:

    因为java中的装箱和拆箱

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

    自动装箱/拆箱是一个纯粹的便利功能,它允许您将原始类型的值分配给包装类的引用,反之亦然,编译器会自动添加代码以在两者之间进行转换。

    Boxing and unBoxingSEE HERE ALSO

    【讨论】:

      猜你喜欢
      • 2014-12-14
      • 1970-01-01
      • 2021-07-26
      • 2012-09-14
      • 2016-03-19
      • 2013-02-27
      • 1970-01-01
      • 2017-07-09
      • 2014-11-07
      相关资源
      最近更新 更多