При создании строки с использованием двойных кавычек ("строка") JVM ищет в пуле строк (String Pool) строку с таким же содержимым. Если такая строка найдена, возвращается ссылка на существующий объект. Если нет, создается новый объект строки в пуле строк, и возвращается ссылка на него. Это оптимизирует использование памяти, так как одинаковые строковые литералы ссылаются на один и тот же объект.
При создании строки с использованием конструктора new String("строка") всегда создается новый объект строки вне пула строк, даже если в пуле строк уже есть строка с таким же содержимым.
Различия:
new String - нет.new String с одинаковым содержимым.== вернет true, так как они ссылаются на один и тот же объект.new String (даже с одинаковым содержимым) или строки, созданной двойными кавычками, со строкой, созданной new String, оператор == вернет false, так как это разные объекты. Для сравнения содержимого строк всегда следует использовать метод equals().Пример:
java