Как кратко создать строку, начинающуюся с простого значения, не используя пустую двойную кавычку? - PullRequest
0 голосов
/ 31 октября 2010

Чтобы получить newString значение "99 bottles":

int x = 99;
String fruit = " bottles";

Чтобы сформировать новую строку, я делаю это:

String newString = "" + x + fruit;

, поскольку это запрещено:

String newString = x + fruit;

Но есть кое-что в использовании двойных кавычек, что кажется неправильным.

Есть ли лучший способ сделать это (без использования "" + x)?

Ответы [ 6 ]

5 голосов
/ 31 октября 2010

Чтобы быть понятным, следующее является совершенно законным 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 агрессивно оптимизировать последовательность конкатенаций строк, поэтому очевидная конкатенация с "" будет оптимизирована.)

4 голосов
/ 31 октября 2010

Одной из альтернатив является функция String#format(). Используйте его следующим образом:

final String newString = String.format("%d bottles", x);

Другая альтернатива - Integer#toString():

final String newString = Integer.toString(x) + " bottles";
2 голосов
/ 31 октября 2010

Использовать Integer.toString ():

int x = 99;
String fruit = " bottles";
String newString = Integer.toString(x) + fruit;

Также есть Float.toString (float val), Double.toString (double val) и Long.toString (long val) Лично мне не нравится использование "" при объединении. Я думаю, что это небрежно, из-за отсутствия лучшего слова.

1 голос
/ 31 октября 2010
String newString = x + fruit;

разрешено в Java.

Еще один способ сделать это:

String newString = String.format("%d bottles", x);
1 голос
/ 31 октября 2010

Я пытался:

int x = 99;
String fruit = " bottles";
String newString = x + fruit;
System.out.println(newString);

в Eclipse и работает , но если вышеописанное не работает для вас, у String есть метод valueOf ():

String newString = String.valueOf(x) + fruit;

Тем не менее, "" на самом деле чаще встречается, как говорилось в 動靜 能量.

0 голосов
/ 31 октября 2010

Использование

String newString = "" + x + fruit;

достаточно распространено, чтобы люди знали, что вы делаете.На каком-то языке вы можете сделать

$str = 3 . 'foo';   # in PHP

На другом языке вы можете сделать

str = "#{x} foo"   # in Ruby

, оба из которых выглядят более естественными.

...