我了解Java中的String变量是不可变的,因此无法更改。
String myString = "Hello.";
myString += " ";
myString += "My name is Kevin";
每次我们向其中“添加”某些东西时String()
,我们都会有效地创建一个new String()
,但是它的名称与要连接的字符串相同。这是否意味着内存中有多个变量为“ myString”的引用?
每次“修改” /拼接的String
与+=
,你创建一个新的String
对象,并更换指定的参考myString
与新创建的String
。因此,没有,内存中只有一个引用,但是引用指向的对象每次都会更改。字符串是不可变的,因此无法“就地”修改对象。
字符串是Java中的不可变类。不可变类只是其实例无法修改的类。创建实例后,实例中的所有信息都会初始化,并且无法修改该信息。不变类有很多优点。
在程序员的StackExchange上,有一个很好的答案,它解释了为什么 String
s在Java中是不可变的,以及有关其工作原理的更多详细信息。
最好的方法是只使用StringBuilder()
类:
String myStringBuilder = new StringBuilder("Hello.");
myStringBuilder.append(" ");
myStringBuilder.append("My name is Kevin");
System.out.println(myStringBuilder.toString());
但是,现代Java编译器String
会将串联StringBuilder
自动转换为操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句