有什么方法可以比较Java中两个int
的内存位置吗?
int x = 25;
int y = 25;
我想检查并证明两个变量是否都指向相同的值,或者它们创建两次。
x == y
上面的行比较不是我想要的文字值。有想法吗?
答案 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之类的东西也只处理引用类型。