Java String.concat() 不进行连接
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18706552/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
String.concat() doesn't do concatenation
提问by
I am trying to concatenate a String with an int and char including spaces, but not getting any concatenation. What is the reason?
我试图将一个字符串与一个包含空格的 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(" ");
采纳答案by ssantos
concat
does not alter the invoking strings, but returns a new one.
concat
不会改变调用字符串,而是返回一个新字符串。
You may assign each resulting String
to your result like this.-
您可以String
像这样将每个结果分配给您的结果。-
messages = messages.concat(String.valueOf(random));
messages = messages.concat(" ");
messages = messages.concat(String.valueOf(ch));
messages = messages.concat(" ");
Or just use the overloaded operator +
或者只使用重载运算符 +
messages = String.valueOf(random) + " " + String.valueOf(ch) + " ";
回答by Cruncher
messages += String.valueOf(random) + " " + String.valueOf(ch) + " ";
回答by Reimeus
Strings
are immutable. You can either append the result using String
concatenation as shown in other answers or you can use StringBuilder
Strings
是不可变的。您可以使用String
连接附加结果,如其他答案所示,或者您可以使用StringBuilder
StringBuilder messages = new StringBuilder();
messages.append(String.valueOf(random));
messages.append(" ");
messages.append(String.valueOf(ch));
messages.append(" ");
Have a look at How do I concatenate two strings in Java?
Edit:(to insert at beginning of String
)
编辑:(在开头插入String
)
messages.insert(0, "newstring");
回答by Ahmed Adel Ismail
char ch='s';
messages = messages.concat(String.valueOf(random));
messages = messages.concat(" ");
messages = messages.concat(String.valueOf(ch));
messages = messages.concat(" ");
String should be RE-Assigned, when you edit a String object, you create a new String Object in the String constant pool, but you didnt assign this new String value to any reference variable, so you will need to re-assign your modifications to the SAME REFERENCE VARIABLE that created them
String 应该是 RE-Assigned,当你编辑一个 String 对象时,你在 String 常量池中创建了一个新的 String 对象,但是你没有将这个新的 String 值分配给任何引用变量,所以你需要将你的修改重新分配给创建它们的相同引用变量
回答by Stathis Andronikos
A better way is :
更好的方法是:
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));