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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 10:21:07  来源:igfitidea点击:

String.concat() doesn't do concatenation

javaandroidstringconcatenationstring-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

concatdoes not alter the invoking strings, but returns a new one.

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

You may assign each resulting Stringto 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

Stringsare immutable. You can either append the result using Stringconcatenation 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?

看看如何在 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));