8

我正在尝试将字符串与包含空格的 int 和 char 连接,但没有得到任何连接。是什么原因?

private String messages;
Random r = new Random();
int random = r.nextInt(1000);

char ch='s';
messages.concat(String.valueOf(random));
messages.concat(" ");
messages.concat(String.valueOf(ch));
messages.concat(" ");
4

5 回答 5

19

concat不改变调用字符串,但返回一个新字符串。

您可以像这样将每个结果分配String给您的结果。-

messages = messages.concat(String.valueOf(random));
messages = messages.concat(" ");
messages = messages.concat(String.valueOf(ch));
messages = messages.concat(" ");

或者只使用重载运算符+

messages = String.valueOf(random) + " " + String.valueOf(ch) + " ";
于 2013-09-09T20:36:02.143 回答
11

Strings是不可变的。您可以使用String连接附加结果,如其他答案所示,也可以使用StringBuilder

StringBuilder messages = new StringBuilder();
messages.append(String.valueOf(random));
messages.append(" ");
messages.append(String.valueOf(ch));
messages.append(" ");

看看如何在 Java 中连接两个字符串?


编辑:(在开头插入String

messages.insert(0, "newstring");
于 2013-09-09T20:37:49.750 回答
6

更好的方法是:

Random r = new Random();
    int random = r.nextInt(1000);

StringBuilder str = new StringBuilder(String.valueOf(random));

str.append("s")
str.append(String.valueOf(random))
str.append(" ");
str.append(String.valueOf(ch));
于 2013-09-09T20:45:20.653 回答
2
messages += String.valueOf(random) + " " + String.valueOf(ch) + " ";
于 2013-09-09T20:35:03.570 回答
0
char ch='s';
messages =  messages.concat(String.valueOf(random));
messages = messages.concat(" ");
messages = messages.concat(String.valueOf(ch));
messages = messages.concat(" ");

字符串应该被重新分配,当你编辑一个字符串对象时,你在字符串常量池中创建了一个新的字符串对象,但是你没有把这个新的字符串值分配给任何引用变量,所以你需要重新分配你的修改创建它们的相同参考变量

于 2013-09-09T20:39:09.360 回答