String Class中没有clone方法

时间:2017-06-24 07:10:12

标签: java string cloneable

技术能力问题

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并不包含克隆方法。

我想知道同样的原因。

2 个答案:

答案 0 :(得分:4)

Stringimmutable object,因此它不需要clone方法,因为客户端代码无法在String类中更改其状态。

您只需参考原始String,例如:

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

答案 1 :(得分:2)

正如已经指出的那样,不需要克隆像String这样的不可变对象。

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

String copy = new String(original);

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