重新初始化一个没有更多内存的字符串数组

时间:2014-03-02 23:31:19

标签: java

在Java中,由于字符串是不可变的,当我们将字符串数组元素分配给不同的字符串并且内存不足时,它会编译并运行正常吗?

我的理解是,例如,如果字符串数组中有2个元素,“John”和“Henry”,当我将数组的第二个元素更改为“Tom”时,“Henry”会发生什么,因为它不能真正结束写入(不可变字符串)和幕后是java指向一个新位置(数组位置应该不是彼此相邻?)。

我运行了一个测试,它成功地将第二个元素更改为Tom。它编译并运行良好。根据我的理解,这不应该被允许,因为字符串不能被写入并且数组应该是连续的存储器位置。请澄清 - 谢谢

1 个答案:

答案 0 :(得分:0)

数组的每个单元格都包含String实例的地址。当您更改第二个单元格的值时,它只指向另一个String实例,如果该单元格先前指向的实例不再被任何其他变量指向,则可能会选择进行垃圾回收。