gpt4 book ai didi

java - 重新初始化一个没有剩余内存的字符串数组

转载 作者:太空宇宙 更新时间:2023-11-04 15:04:51 25 4
gpt4 key购买 nike

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

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

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

最佳答案

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

关于java - 重新初始化一个没有剩余内存的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22135163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com