Why String class is not Cloneable?

2020-07-14 12:10发布

问题:

Why String class is not implementing Cloneable interface?

For example: (We write this type of code sometimes.)

String s1 = new String("Hello");

String s2 = new String("Hello");

Here s1!=s2;

So instead of doing this , if we could have done:

String s1 = new String("Hello");

String s2 = s1.clone();

This could be easy.

回答1:

The String class represents an immutable string. There would be no purpose to cloning a String. If you feel that you need to clone it, then you can just reuse the same reference and achieve the same effect.

Even if you could clone s1 as s2, then s1 != s2 would still be true. They'd still be references to distinct objects.



回答2:

You can clone string with

String clonedString = new String(stringToClone);

so

String s1 = new String("Hello");
String s2 = new String(s1);


回答3:

Here's another way:

String s2 = s1.concat("");