如何简洁地创建一个以原始值开头而不使用空双引号的String?

kor*_*ors 0 java string primitive

要获得newString值" 99 bottles":

int x = 99;
String fruit = " bottles";
Run Code Online (Sandbox Code Playgroud)

要形成一个新的String,我这样做:

String newString = "" + x + fruit;
Run Code Online (Sandbox Code Playgroud)

因为这是不允许的:

String newString = x + fruit;
Run Code Online (Sandbox Code Playgroud)

但是这里使用双引号有点似乎不对.

有没有更好的方法来做到这一点(不使用"" + x)?

Ste*_*n C 5

要明确以下是完全合法的Java:

    String fruit = " bananas";
    int x = 99;
    String newString = x + fruit; // "99 bananas"
Run Code Online (Sandbox Code Playgroud)

的双值+运算符是字符串连接,如果任一左或右操作数表达式的类型是String; 见JLS 15.18.

在这种情况下,以下内容是等效的:

    String newString = "" + x + fruit;
Run Code Online (Sandbox Code Playgroud)

初始""是一个常见的习惯用法,使读者清楚地了解字符串连接.(我个人不会使用它,因为它看起来很笨重.IMO,这就像添加多余的括号来帮助那些不了解运算符Java优先级规则的程序员.Icck.)

在上面的例子中,""没有语义差异.但是,有时候领导会""改变表达的含义.例如:

    int x = 1;
    String fruit = " bananas";
    String newString = x + x + fruit;  // "2 bananas"
    String newString2 = "" + x + x + fruit; // "11 bananas".
Run Code Online (Sandbox Code Playgroud)

(请注意,javacJLS允许编译器积极地优化字符串串联的序列,因此""将优化掉明显的串联.)