据我所知,
可变字符串可以更改,不可变字符串不能更改。
这里我想这样改变字符串的值,
String str="Good";
str=str+" Morning";
另一种方法是,
StringBuffer str= new StringBuffer("Good");
str.append(" Morning");
在这两种情况下,我都试图改变str的值。谁能告诉我,这两种情况的区别是什么,让我清楚地了解可变和不可变对象。
在Java,所有的字符串都是不可变的。当你试图修改一个String
时,你真正做的是创建一个新的。然而,当你使用一个StringBuilder
时,你实际上是在修改内容,而不是创建一个新的。
java中的可变字符串和不可变字符串有什么区别
不可变的存在,不可变的不存在。
String str = "Good";
str = str + " Morning";
在上面的代码中,您创建了3个String
对象。
注意:字符串总是不可变的。不存在可变字符串之类的东西<代码>str只是一个最终指向“早上好”的参考。实际上,您并不是在处理对象。您有3个不同的字符串对象。
StringBuffer str = new StringBuffer("Good");
str.append(" Morning");
StringBuffer包含一个字符数组。它与字符串不同。以上代码向现有数组中添加字符。实际上,
StringBuffer
是可变的,它的字符串表示不是可变的。
问题内容: 据我所知, 可变字符串可以更改,而不变字符串则不能更改。 在这里我想这样改变String的值, 而另一种方式是 在这两种情况下,我都试图更改的值。谁能告诉我,这两种情况有什么区别,让我清楚地了解可变和不可变的对象。 问题答案: 情况1: 在上面的代码中,您将创建3个对象。 “好”它将进入 字符串池 。 “早晨”也进入 字符串池 。 通过合并“ Good”和“ Morning”创建的“
本文向大家介绍Java中的不可变字符串,包括了Java中的不可变字符串的使用技巧和注意事项,需要的朋友参考一下 在Java中,不可变对象是指那些不能更改或修改(一旦修改)数据的对象。字符串类是不可变的,即一旦我们创建了一个字符串对象,就无法修改其数据。
问题内容: 他们为什么决定使用 Java和.NET(和其他一些语言)使其不可变?他们为什么不使它可变? 问题答案: 根据Effective Java第四章第73页第2版: “这样做有很多充分的理由:不可变的类比可变的类更易于设计,实现和使用。它们不易出错且更安全。 […] “ 不可变对象很简单。不可变对象可以恰好处于一种状态,即创建时的状态。如果确保所有构造函数都建立类不变式,则可以保证这些不变式
问题内容: 我们都知道这String在Java 中是不可变的,但是请检查以下代码: 为什么该程序会这样运行?为何值和改变了,但没有改变? 问题答案: 是不可变的*,但这仅意味着你无法使用其公共API对其进行更改。 你在这里所做的是使用反射来绕过常规API。同样,你可以更改枚举的值,更改整数自动装箱中使用的查找表等。 现在,原因s1和s2变化值是它们都引用相同的实习字符串。编译器执行此操作(如其他答
问题内容: 我正在使用一个返回字节字符串的库,我需要将其转换为字符串。 尽管我不确定有什么区别-如果有的话。 问题答案: 假设使用Python 3(在Python 2中,这种区别的定义不太明确)-字符串是字符序列,即unicode码点;这些是一个抽象概念,不能直接存储在磁盘上。毫无疑问,字节字符串是字节的序列- 可以 存储在磁盘上的东西。它们之间的映射是一种 编码 -其中有很多(并且无限可能)-并