【问题标题】:String.concat() doesn't do concatenationString.concat() 不进行连接
【发布时间】:2013-09-13 10:23:43
【问题描述】:

我正在尝试将字符串与包含空格的 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()的返回值。 String 是不可变的。

标签: java android string concatenation string-concatenation


【解决方案1】:

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

【讨论】:

  • 如何在字符串的开头连接任何指定的字符串?
  • @Martin messages = "newstring" + messages
  • @Martin 反过来说。 "yourString".concat(message); 如果你想使用方法调用。
  • 再次使用+ 运算符,类似于resultingString = specifiedString + originalString
  • 注意:'+' 运算符的使用实际上会使用 StringBuilder
【解决方案2】:

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

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

看看How do I concatenate two strings in Java?


编辑:(插入String的开头)

messages.insert(0, "newstring");

【讨论】:

  • 有什么方法可以在字符串的开头附加任何指定的字符串?
  • 是的,StringBuilder 有一个带有偏移位置的 insert 方法
【解决方案3】:

更好的方法是:

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

【讨论】:

  • 最好是,因为你不需要创建所有那些字符串对象 throw concat() 方法
  • 这应该是公认的答案。 StringBuilder 不会为每次添加分配一个新字符串。任何时候你连接超过 2 个字符串都是可行的方法
【解决方案4】:
messages += String.valueOf(random) + " " + String.valueOf(ch) + " ";

【讨论】:

  • 需要在其声明中将messages 初始化为“”
  • 是的,这假定消息已初始化。问题是关于连接的。
【解决方案5】:
char ch='s';
messages =  messages.concat(String.valueOf(random));
messages = messages.concat(" ");
messages = messages.concat(String.valueOf(ch));
messages = messages.concat(" ");

String 应该被重新赋值,当你编辑一个 String 对象时,你在 String 常量池中创建了一个新的 String 对象,但是你没有将这个新的 String 值赋给任何引用变量,所以你需要重新赋值您对创建它们的 SAME REFERENCE VARIABLE 的修改

【讨论】:

    猜你喜欢
    • 2011-02-11
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多