是否有可能在Java中找到非原始变量的地址?

Jam*_*sev 2 java object

如果Integer i = 88,内存地址i是什么?

另外,如果作为调试器的一部分,id数字更改,是否表示创建了新对象这一事实?

在此输入图像描述

Tom*_*icz 6

为什么需要Java中任何对象的内存地址?你只能说Integer实例存在于堆中.您找不到确切的地址.

第二个问题:是的,Integer对象是不可变的,所以当类型变量的值Integer改变时,它意味着它指向不同的实例Integer.但是,这并不一定意味着创建了一个新实例.new Integer(42)始终创建一个新实例,同时Integer.valueOf(42)每次调用时都会创建相同的实例.

  • 除此之外,地址可能会随着时间的推移而变化,因为垃圾收集会移动对象以合并自由空间. (2认同)