Чтобы быть понятным, следующее является совершенно законным Java:
String fruit = " bananas";
int x = 99;
String newString = x + fruit; // "99 bananas"
Оператор диадического +
является объединением строк, если либо тип выражения левого или правого операнда - String
;см. JLS 15.18 .
В этом случае эквивалентно следующее:
String newString = "" + x + fruit;
Начальная ""
- это общая идиома, которая делает ее кристально понятной для читателяэта конкатенация строк участвует.(Я лично не использовал бы это, хотя, поскольку это выглядит неуклюжим для меня. IMO, это походит на добавление избыточных скобок, чтобы помочь программистам, которые не знают правила приоритета оператора Java. Icck.)
ВВ приведенном выше примере ""
не имеет смысловой разницы.Однако бывают случаи, когда ведущий ""
меняет значение выражения.Например:
int x = 1;
String fruit = " bananas";
String newString = x + x + fruit; // "2 bananas"
String newString2 = "" + x + x + fruit; // "11 bananas".
(Обратите внимание, что JLS разрешает компилятору javac
агрессивно оптимизировать последовательность конкатенаций строк, поэтому очевидная конкатенация с ""
будет оптимизирована.)