Java String.concat()不';不做串联

Java String.concat()不';不做串联,java,android,string,concatenation,string-concatenation,Java,Android,String,Concatenation,String Concatenation,我试图用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.conca

我试图用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(" ");

concat
不会更改调用字符串,但会返回一个新字符串

您可以将每个结果
字符串
分配给您的结果,如下所示-

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) + " ";

字符串
是不可变的。您可以使用
String
连接来追加结果,如其他答案中所示,也可以使用

看看


编辑:(在
字符串的开头插入)

应重新分配字符串,当您编辑字符串对象时,您在字符串常量池中创建了一个新的字符串对象,但您没有将此新字符串值分配给任何引用变量,因此您需要将修改重新分配给创建它们的同一引用变量。更好的方法是:

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));

您需要重新分配
concat()
的返回值
String
是不可变的。如何在字符串的开头添加任何指定的字符串?@Martin
messages=“newstring”+messages
@Martin反过来说<代码>yourString.concat(消息)。再次使用
+
操作符,类似于
resultingString=specifiedString+originalString
注意:“+”操作符的用法将实际使用StringBuilder,需要在其声明中将
消息
初始化为“”。是的,这假设消息已初始化。问题是关于连接。是否有任何方法可以将任何指定的字符串附加到字符串的开头?是的,
StringBuilder
有一个带有偏移位置的方法更好是的,因为您不需要创建所有这些字符串对象抛出concat()方法这应该是可以接受的答案。StringBuilder不会为每个添加分配新字符串。任何时候,只要你有两个以上的弦,就可以了
StringBuilder messages = new StringBuilder();
messages.append(String.valueOf(random));
messages.append(" ");
messages.append(String.valueOf(ch));
messages.append(" ");
messages.insert(0, "newstring");
char ch='s';
messages =  messages.concat(String.valueOf(random));
messages = messages.concat(" ");
messages = messages.concat(String.valueOf(ch));
messages = messages.concat(" ");
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));