String Class 中没有克隆方法

No clone method in String Class

技术能力问题

HashMap<String, String> map = new HashMap<String,String>();
String key1 = "key1";
map.put(key1, "value1");
String key2 = key1.clone();
map.put(key2, "value2");

地图对象的内容是什么?

我回答为 {key1=value2} 但后来意识到 String 不包含克隆方法。

我想知道同样的原因。

String 是一个 immutable object,因此它不需要 clone 方法,因为客户端代码无法在 String [=20] 中更改其状态=].

你可以参考原文String,例如:

String key2 = key1;// or using key1 directly instead.

正如已经指出的那样,没有必要克隆像 String.

这样的不可变对象

但是如果您决定确实需要一个不同的字符串实例(您几乎肯定不需要),您可以使用复制构造函数:

String copy = new String(original);

System.out.println(copy.equals(original)); // true
System.out.println(copy == original); // false