比较两个基元的内存位置



有什么方法可以比较java中两个int的内存位置吗?

int x = 25;
int y = 25;

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

x == y

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

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

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

看到bipush被调用了两次,就会出现两次堆栈分配。不过,稍后很可能会进行优化。

你想要的是不可能的。

Java中的基元值就是:基元。它们的"定义"中没有任何内容与内存位置有关。

不过,javac编译器将进行常量折叠,当然,如果您有问题的话,jit将在运行时应用各种优化。但是,对于基元值,您无法获得"内存布局"。即使是*com.misc.Unsafe"和VarHandle的东西也只处理引用类型。

相关内容

  • 没有找到相关文章

最新更新