TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #2333 2.13K
Для кого-то неожиданно узнать, что Java не конкатенирует строки на этапе выполнения в таком кейсе:
String c = "a" + "b";

Что важно:

Строка в Java хранится как byte[] + флаг кодировки:

0 — LATIN1 (1 байт на символ, для ASCII экономия памяти)
1 — UTF-16 (2 байта на символ)

Строки размещаются в двух областях:

- куча
- пул строковых констант (SCP)

Пример:

String a = "hello", b = "hello";


a == btrue, обе переменные указывают на один объект из пула

Пример:

String a = "hello", b = new String("hello");


a == bfalse, разные объекты в куче

При такой записи:

String c = "a" + "b";


компилятор Java выполняет константную свёртку и подставляет готовое значение:

String c = "ab";


Конкатенации на этапе выполнения нет — это вычисляется на этапе компиляции.

но это не работает со строковыми переменными:

java id="xq7v2m"
String a = "a", b = "b", c = a + b;


здесь компилятор Java уже не может сделать константную свёртку, поэтому генерируется вызов через invokedynamic с StringConcatFactory

На уровне байткода это реализуется через механизм динамической конкатенации строк (JEP 280 / JEP 357), который выбирает оптимальную стратегию выполнения во время запуска.

В ранних версиях вместо этого использовался StringBuilder, где код фактически превращался в цепочку append() и финальный toString().

👉 Java Portal
  • 🤔 6
  • 👍 1
More from @java_iibrary
  1. Sep 24, 2026Java-разработчики, в чём разница между volatile и synchronized? Многие используют их. Но в…
  2. Sep 23, 2026Готовимся к System Design интервью уровня Middle и Senior Полезный конспект по проектирова…
  3. Sep 23, 2026Java-разработчики, знаете разницу между Shallow Copy и Deep Copy? Вы копируете объект, но…
  4. Sep 22, 2026Java-разработчики: Почему ArrayList увеличивает свою ёмкость примерно на 50%, когда заканч…
  5. Sep 22, 2026Прогрев от Java-бабули 🙂 👉 Java Portal
  6. Sep 21, 2026Шпаргалка по проектированию веб систем System Design 101 Подробное руководство по архитект…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →