Большинство ответов здесь верны (это обрабатывается компилятором, + преобразуется в .append()...)
Я хотел добавить, что каждый должен взглянуть на исходный код для String и в какой-то момент добавить его, это довольно впечатляюще.
Я считаю, что это сводилось к чему-то вроде:
"a"+"b"+"c"
=
new String().append("a").append("b").append("c")
Но потом происходит какое-то волшебство. Это превращается в:
- Создайте массив строк длины 3
- скопируйте a в первую позицию.
- скопировать б во второй
- скопировать c в третий
Принимая во внимание, что большинство людей считают, что он создаст «ab», а затем выбросит его, когда он создаст «abc». Он на самом деле понимает, что его приковывают, и делает некоторые манипуляции.
Существует также трюк, когда, если у вас есть строка «abc», и вы запрашиваете подстроку, которая оказывается «bc», они МОГУТ использовать один и тот же базовый массив. Вы заметите, что есть начальная позиция, конечная позиция и «общий» флаг.
На самом деле, если он не используется совместно, он может увеличить длину строки и скопировать в нее остальные.
Сейчас я просто путаюсь. Прочтите исходный код — это довольно круто.
person
Bill K
schedule
24.02.2010