代码之家  ›  专栏  ›  技术社区  ›  Roshana Pitigala Laxmansinghsodhanohdiyala

比较两个基本体的内存位置

  •  3
  • Roshana Pitigala Laxmansinghsodhanohdiyala  · 技术社区  · 6 年前

    有什么方法可以比较两个人的记忆位置吗 int 在Java中?

    int x = 25;
    int y = 25;
    

    我想检查并证明这两个变量是引用相同的值还是创建了两次。

    x == y
    

    上面一行比较文字 价值观 这不是我想要的。知道吗?

    2 回复  |  直到 6 年前
        1
  •  5
  •   Logan Julio Cesar Maciel    6 年前

    虽然这不可能与代码有关,但您可以查看由代码片段生成的字节码。

    0: bipush        25
    2: istore_1
    3: bipush        25
    5: istore_2
    6: return
    

    看到这个 bipush 调用了两次,似乎进行了两次堆栈分配。不过,稍后可以很好地进行优化。

        2
  •  4
  •   GhostCat    6 年前

    你所要求的是不可能的。

    Java中的原始值仅仅是: 价值观 . 它们“定义”中的任何内容都与内存位置无关。

    不过,javac编译器将不断进行折叠,当然,如果这是您的问题,那么JIT将在运行时应用各种优化。但是对于原始值来说,您没有办法进入“内存布局”。即使是*com.misc.unsafe”和varhandle都只处理引用类型。