- String является классом в Java . Вы правы в этом, поэтому мы всегда можем инициализировать ключевое слово new
.
- Но когда мы делаем что-то вроде:
String s = "";
Вышеупомянутый оператор отмечен компилятором как особый объект String, а затем JVM во время загрузки класса (загрузка выполняется до инициализации), видит это, как известно, как строковый литерал, который хранится в пуле строковых литералов.
. Таким образом, String может быть создана с использованием new()
и методом ""
, но последняя предоставляет строковый литерал, который остается в куче, даже если нет ссылки на этот строковый объект, поскольку он имеет ссылку из пула строковых литералов.