Bonny Mathew
Bonny Mathew

Reputation: 171

No clone method in String Class

A technical aptitude question

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

What are the contents of the map object?

I answered it as {key1=value2} but later realized that String doesn't contain clone method.

I wanted to know the reason for the same.

Upvotes: 2

Views: 4592

Answers (2)

Andy Turner
Andy Turner

Reputation: 140514

As has been pointed out already, there is no need to clone immutable objects like String.

But if you decide you really need a distinct instance of the string (and you nearly certainly don't), you can use the copy constructor:

String copy = new String(original);

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

Upvotes: 3

holi-java
holi-java

Reputation: 30696

String is an immutable object, so it needn't a clone method since the client code can't change its state inside the String class.

you can just ref to the original String, for example:

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

Upvotes: 5

Related Questions