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

Java字符串是不可变的?[复制]

杨波娃
2023-03-14

为什么Java字符串被认为是不可变的?我可以说String name=“Paul”之后将name值更改为name=“Henry” 。不变性从何而来?


共有3个答案

松灿
2023-03-14

区分引用String的变量:name和它引用的String。

名字最初指向字符串“Paul”,后来你将它改为指向其他地方,“Paul”本身不受影响。

考虑

 String name = "Paul";
 String name1 = name;

 name = "Peter";

现在名称1指的是什么?

微生雨泽
2023-03-14

物体本身没有改变。

你所做的是以下几点

name <- String("Paul")
name <- String("Henry")

字符串(保罗)没有被更改。

尝试以下操作:

String a = "test";
String b = a;
a = "test2";

System.out.println(b);
东方修谨
2023-03-14

一个新的字符串被创建,它们绝对是不可变的,并且被拘留。

你不能这么做:

String name = "Paul"; // in effect the same as new String("Paul");
name.setValue("Henry")

因为字符串是不可变的,所以必须创建一个全新的对象。

 类似资料:
  • 我们都知道在Java中是不可变的,但是检查下面的代码: 为什么这个程序会这样操作?为什么和的值被更改了,而却没有被更改?

  • 本文向大家介绍Java中的不可变字符串,包括了Java中的不可变字符串的使用技巧和注意事项,需要的朋友参考一下 在Java中,不可变对象是指那些不能更改或修改(一旦修改)数据的对象。字符串类是不可变的,即一旦我们创建了一个字符串对象,就无法修改其数据。

  • 问题内容: 我们都知道这String在Java 中是不可变的,但是请检查以下代码: 为什么该程序会这样运行?为何值和改变了,但没有改变? 问题答案: 是不可变的*,但这仅意味着你无法使用其公共API对其进行更改。 你在这里所做的是使用反射来绕过常规API。同样,你可以更改枚举的值,更改整数自动装箱中使用的查找表等。 现在,原因s1和s2变化值是它们都引用相同的实习字符串。编译器执行此操作(如其他答

  • 据我所知, 可变字符串可以更改,不可变字符串不能更改。 这里我想这样改变字符串的值, 另一种方法是, 在这两种情况下,我都试图改变str的值。谁能告诉我,这两种情况的区别是什么,让我清楚地了解可变和不可变对象。

  • 问题内容: 在 “ Swift编程语言” 的“字符串”部分的“字符串 可变性” 小节中,它表示: 您可以通过将某个变量分配给变量(在这种情况下可以修改)或常量(在这种情况下不能修改)来指示是否可以修改(或 变异 ): 并给出示例代码: 这本书中的iBooks 这里,或在Web浏览器在这里。 在下一段中,它声称“字符串是值类型”。 我的问题:对我来说,这看起来像个可变的字符串。看起来就像我在Java