技术能力问题
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并不包含克隆方法。
我想知道同样的原因。
答案 0 :(得分:4)
String
是immutable 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