当前位置: 首页 > 知识库问答 >
问题:

更改Java中的最终字符串值[duplicate]

穆城
2023-03-14

如果您构建了一个对象,说“intruder”并将其定义为final,那么您仍然可以更改类定义中不是final的对象字段(即intruder.power=50;)。在这种情况下,限制将是关于入侵者的对象引用,而不是内部值。

我的问题是:字符串作为一个例子呢?如果您创建了一个字符串对象,比如“String s=new String(”str“);是否有一种方法可以更改字符串的”str“值?如果没有,为什么会这样?是否可以更改字符串对象的字面值而不更改它的引用?

谢谢你!

共有1个答案

卫嘉佑
2023-03-14

字符串是不可变的,正如其他答案所述。如果您想要更改字符串的功能,StringBuilder或StringBuffer是您需要的。

 类似资料:
  • 问题内容: 让我们从一个简单的测试用例开始: 任何人都在乎猜测什么将作为输出打印(在底部显示,以免立即破坏惊喜)。 问题是: 为什么原始和包装的整数表现不同? 为什么反射访问与直接访问返回不同的结果? 最困扰我的人-为什么String表现得像原始的而不是像? 结果(java 1.5): 问题答案: 内联编译时常量(在javac编译时)。参见JLS,尤其是15.28定义了常量表达式,而13.4.9讨

  • 背景故事: 我需要根据我制作的字母表来排列单词。 我之前做了大量的循环,但我从之前问题的答案中得到了一个想法,可以像这样映射它: 所以词会变,苹果会变成苹果--- 这似乎覆盖了所有字符,因此输出为: 我的大脑今天很模糊,我想我可以一直坚持到最后,直到找到某种解决方案,但这似乎不是一种有效的方法。有什么想法吗? 此时,我从列表中提取一个单词,将其放入一个字符数组中,这样我就可以分别更改每个字符,然后

  • #include <stdio.h> int main(void) { char p1[] = "Sam"; char *p2 = "Bob"; printf("p1 is %s, p2 is %s\n", p1, p2); return 0; } 技巧 使用gdb调试程序时,可以用“set”命令改变字符串的值,以上面程序为例: (gdb) start Tem

  • 我认为每次更改字符串后,Python字符串的id都必须更改。但我发现真正的行为是不同的。例如,并非输出下面的所有代码字符串都不同: 这就是为什么我认为Python内核正在尝试优化代码,并开始对内存中的字符串进行奇怪的操作。该假设的另一个论点是,常量ID与大小为2的幂的段相关联: 但这其中还有一件奇怪的事。让我们看看随着字符串大小的增加,段大小会发生什么变化: 最后,我们可以尝试近似地将char添加

  • 问题内容: Python中替换字符串中字符的最简单方法是什么? 例如: 问题答案: 不要修改字符串。 与他们一起工作作为清单;仅在需要时才将它们转换为字符串。 Python字符串是不可变的(即无法修改)。有很多的原因。使用列表,直到你别无选择,然后将它们变成字符串。

  • 问题内容: Python 2嵌入了“所有名称字符”字符串,最长20个代码点: 在Python 3.7中,这个数字似乎增加到4096: 首先:是什么促使了这一变化? 其次,此限制在CPython中的何处建立?我一生中都找不到对该号码的引用。我从这里看不到它,并且签入仅查找匹配的字符串。 问题答案: 实习发生在代码即编译时。通常,编译时会导致以下字节码: 但是,由于两者都是常量,因此可以在窥视孔优化器