我想知道 Java 是否创建过指向其他字符串的指针。
一个可能是指针的示例:
App app = new App("name");
String name = app.getName();
如果我在String name
初始化后使用app.setName("newName")
更改值,则String name
的值获胜不改变。
这表明 String name 不是指针,而是一个新字符串。
但也有可能,对吧?我的意思是它可能是一个指针,直到更改任何一个值(应用程序中的字符串名称或字符串名称)以节省内存?
那么它是一个指针吗?
与:String Interning 不同的问题 其中特别要求对 String Interning 进行解释。例如 String.intern()
最佳答案
app.setName("newName") 将创建一个新字符串“newName”并将其存储在字符串池中,app 中的字符串指针现在被替换为指向新字符串。 “name”字符串仍然存在。
要记住的关键一点是Java字符串对象永远改变,如果你创建一个新的字符串,或者修改一个旧的字符串,它总是会导致创建一个新的对象。另外,String 是一个对象,因此 String 变量始终存储对其他位置存储的 String 的引用(在带有其他变量的堆中,或在 String 常量池中)。
关于java - Java 是创建新的字符串还是指向原始字符串的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40783820/