为什么他们决定在Java和.NET(以及其他一些语言)中使字符串不可变?他们为什么不让它变得可变?
众所周知,String是不可变的.String不可变的原因是什么,StringBuilder类的引入是可变的?
JavaScript 字符串是不可变的。这意味着一旦创建了字符串,就无法对其进行修改。但是,仍然可以根据对原始字符串的操作创建另一个字符串
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structs
我理解不可变的含义,但我需要知道他们为什么这样构建它以及这种不可变方法的价值是什么?
注意:我查阅了一些Java 参考资料,但我不是 Java 开发人员,我无法理解其中的术语(StringPool、hashcode ...)
可能重复:
提示java.lang.String.replace问题?
在Java中使用string.replace()
为什么“ /”不替换为“ _”?
public static void main(String[] args) throws IOException {
String file = "A/B";
file.replaceAll("/", "_");
System.out.println(file);
}
Run Code Online (Sandbox Code Playgroud) 我有以下一段代码
import java.io.*;
import java.util.*;
class MainDriver{
public static void main(String aa[]){
Scanner reader = new Scanner (System.in);
String name;
System.out.println("enter your name");
name = reader.nextLine();
name.trim();
System.out.println (name);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在输入中给出空格,我想知道输出
输入
bayant singh
Run Code Online (Sandbox Code Playgroud)
产量
bayant singh
Run Code Online (Sandbox Code Playgroud)
那么为什么name.trim;不在这里工作?因为我猜输出是
bayantsingh //no spaces
Run Code Online (Sandbox Code Playgroud) theString如果我在此代码中使用替换方法,为什么还需要重新定义变量:
String theString = "I w@nt to h@ve the regul@r \"A\"!";
theString = theString.replace("@", "a");
System.out.println(theString);
Run Code Online (Sandbox Code Playgroud)
为什么我不能这样做:
theString.replace("@", "a");
Run Code Online (Sandbox Code Playgroud)
那就是它?