0

要获得newString“”的值99 bottles

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

要形成一个新的字符串,我这样做:

String newString = "" + x + fruit;

因为这是不允许的:

String newString = x + fruit;

但是在这里使用双引号似乎有些不对劲。

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

4

6 回答 6

5

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

    String fruit = " bananas";
    int x = 99;
    String newString = x + fruit; // "99 bananas"

如果左操作数或右操作数表达式的类型是;则二元+运算符是字符串连接。见JLS 15.18String

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

    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".

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

于 2010-10-30T23:49:02.023 回答
4

一种替代方法是String#format()函数。按如下方式使用它:

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

另一种选择是Integer#toString()

final String newString = Integer.toString(x) + " bottles";
于 2010-10-30T23:07:19.640 回答
2

使用 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)。就个人而言,我不喜欢在进行连接时使用“”。我认为这是草率的,因为没有更好的词。

于 2010-10-31T01:11:01.250 回答
1

我试过了:

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

在 Eclipse 上,它确实有效......但如果上述方法对您不起作用,则 String 有一个 valueOf() 方法:

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

然而,正如动静能量所说,“”实际上更常见。

于 2010-10-30T23:07:52.787 回答
1
String newString = x + fruit;

在 Java 中是允许的。

另一种方法是:

String newString = String.format("%d bottles", x);
于 2010-10-30T23:10:12.540 回答
0

用途

String newString = "" + x + fruit;

很常见,人们知道你在做什么。在某些语言中,你可以做

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

在某些语言中,你可以做

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

两者看起来更自然。

于 2010-10-30T23:01:06.493 回答