Java 字符串类中没有克隆方法

Java 字符串类中没有克隆方法,java,string,cloneable,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"); HashMap map=newhashmap(); 字符串key1=“key1”; 地图放置(键1,“值1”); 字符串key2=key

技术能力倾向问题

HashMap<String, String> map = new HashMap<String,String>();
String key1 = "key1";
map.put(key1, "value1");
String key2 = key1.clone();
map.put(key2, "value2");
HashMap map=newhashmap();
字符串key1=“key1”;
地图放置(键1,“值1”);
字符串key2=key1.clone();
地图放置(键2,“值2”);
地图对象的内容是什么

我回答为{key1=value2},但后来意识到字符串不包含clone方法

我想知道这样做的原因。

String
是一个,因此它不需要克隆方法,因为客户端代码不能在
String
类中更改其状态

您可以只引用原始的
字符串
,例如:

String key2 = key1;// or using key1 directly instead.
String
是一个类,因此它不需要使用
clone
方法,因为客户端代码不能在
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

正如已经指出的,没有必要克隆像
String
这样的不可变对象

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

String copy = new String(original);

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

字符串是不可变的。没有理由克隆它。为什么你认为它会有用?我有点困惑于这个问题,“map对象的内容是什么?”代码没有编译,所以没有map对象,或者其他任何东西。您要求我们讨论一些不可能存在的东西的状态。实际上,
String
确实有一个
clone()
方法,继承自
对象
;它只受
保护
,如果被调用,将抛出
CloneNotSupportedException
。字符串是不可变的。没有理由克隆它。为什么你认为它会有用?我有点困惑于这个问题,“map对象的内容是什么?”代码没有编译,所以没有map对象,或者其他任何东西。您要求我们讨论一些不可能存在的东西的状态。实际上,
String
确实有一个
clone()
方法,继承自
对象
;它只是受
保护
,如果被调用,将抛出
CloneNotSupportedException