Возможный дубликат:
Какова цель выражения "new String (...)" в Java?
Если копии объектов неизменяемых объектов будут равны оригиналам, то почему класс String в Java имеет конструктор копирования? Является ли это ошибкой или есть причина этой реализации?
В документах Java указано, что:
/**
 * Initializes a newly created {@code String} object so that it represents
 * the same sequence of characters as the argument; in other words, the
 * newly created string is a copy of the argument string. Unless an
 * explicit copy of {@code original} is needed, use of this constructor is
 * unnecessary since Strings are immutable.
 *
 * @param  original
 *         A {@code String}
 */
 public String(String original) {
 ....
 ....}
