gpt4 book ai didi

java - StringBuffer 创建的 String 对象存储在内存中的哪里?

转载 作者:行者123 更新时间:2023-12-01 07:46:27 26 4
gpt4 key购买 nike

StringBuffer str = new StringBuffer("Java");字符串“Java”将在哪里创建?普通堆还是常量池?

接下来如果我将其修改为-str.append("九");

修改会发生在哪里?它会修改常量池中的字符串“Java”并将其转换为“Java 9”吗?

最佳答案

StringBuffer str = new StringBuffer("Java"); Where would String "Java" be created? Normal heap or constant pool?

该语句不会创建 String 对象。它创建一个 StringBuffer 对象,并在此过程中将字符串“Java”中的字符复制到由 str 内部维护的字符数组中。在该语句运行之前字符串“Java”已经存在。粗略地说,它是在初始化包含此代码的类时在常量池中创建的。

Next if I modify it as- str.append(" nine");

Where would the modification happen ? Would it modify the string "Java" in constant pool and convert it to "Java nine"?

修改发生在由str维护的内部字符数组中。原始字符串“Java”不受影响。 Java 中的 String 对象是不可变的。

关于java - StringBuffer 创建的 String 对象存储在内存中的哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50981625/

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