比较两个基元的存储位置

时间:2018-07-22 04:16:02

标签: java variables compare primitive

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

int x = 25;
int y = 25;

我想检查并证明两个变量是否都指向相同的值,或者它们创建两次。

x == y

上面的行比较不是我想要的文字。有想法吗?

2 个答案:

答案 0 :(得分:5)

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

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

看到bipush被调用了两次,看来将进行两次堆栈分配。不过,很可能会在以后进行优化。

答案 1 :(得分:4)

您要的是不可能的。

Java中的原始值就是:原始。它们的“定义”与存储位置无关。

尽管如此,javac编译器将进行连续折叠,如果您有问题,那么jit当然会在运行时应用各种优化。但是您没有办法获得有关原始值的“内存布局”。甚至* com.misc.Unsafe“和VarHandle之类的东西也只处理引用类型。