При использовании литерала " сначала происходит поиск строки в heap, если не найдена, то создается новая и помещается в пул объектов, если найдена, то возвращается строка из пула. Если же используется new String("...") то сначала инициализируется строка в кавычках, так, как описано выше, но...