在Java中,ArrayList移除一个元素之后,为什么内存空间不连续了?

如图所示,地址为673061的内存单元是被JVM回收了!按道理来说,一维数组的内存空间肯定是连续的;

看你的代码,你似乎搞错了一个问题,你打印输出的是存在ArrayList中的字符串的hash值,也可以理解为存储的字符串在内存中的地址。但是 ArrayList 里面有个elementData[]数组,他的每个索引地址才是连续的一段存储单元,而这每个存储单元中存放的是所谓你打印输出的字符串的内存地址。下面给个图解:

追问

感谢!也就是说我存储的是字符串常量,所以我打印出来的其实是字符串常量的地址,而不是数组每个String单元的地址。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答