如何在java中连接字符?

2022-09-01 00:19:55

如何在java中连接字符?连接字符串只需要字符串之间的一个,但是使用连接字符会将字符的值更改为ascii,从而给出数字输出。我想做并创建一个这样的字符串单词。++System.out.println(char1+char2+char3...

我可以做

System.out.print(char1);
System.out.print(char2);
System.out.print(char3);

但是,这只会让我得到1行中的字符。我需要它作为字符串。任何帮助将不胜感激。

谢谢


答案 1

你想用它们做一根绳子吗?

String s = new StringBuilder().append(char1).append(char2).append(char3).toString();

请注意,

String b = "b";
String s = "a" + b + "c";

实际编译为

String s = new StringBuilder("a").append(b).append("c").toString();

编辑:正如 litb 所指出的,你也可以这样做:

"" + char1 + char2 + char3;

这将编译为以下内容:

new StringBuilder().append("").append(c).append(c1).append(c2).toString();

编辑(2):更正了字符串追加比较,因为正如cletus所指出的那样,编译器处理了一系列字符串。

上述内容的目的是说明编译器的作用,而不是告诉您应该做什么。


答案 2

我不打算回答这个问题,但这里有两个答案(正在被投票!)是完全错误的。请考虑以下表达式:

String a = "a" + "b" + "c";
String b = System.getProperty("blah") + "b";

第一个在编译时进行评估。第二个在运行时进行评估。

因此,切勿将常量串联(任何类型的)替换为StringBuilder,StringBuffer或类似内容。仅使用那些变量入的地方,通常只在你追加大量操作数或你在循环中追加的时候使用。

如果字符是常量,这很好:

String s = "" + 'a' + 'b' + 'c';

但是,如果它们不是,请考虑以下情况:

String concat(char... chars) {
  if (chars.length == 0) {
    return "";
  }
  StringBuilder s = new StringBuilder(chars.length);
  for (char c : chars) {
    s.append(c);
  }
  return s.toString();
}

作为适当的解决方案。

但是,有些人可能会想要优化:

String s = "Name: '" + name + "'"; // String name;

进入这个:

String s = new StringBuilder().append("Name: ").append(name).append("'").toString();

虽然这是善意的,但底线是不要

为什么?正如另一个正确指出的那样:编译器为您执行此操作。因此,在自己动手时,您不允许编译器优化代码,或者不依赖于它是否是一个好主意,代码更难阅读并且不必要地复杂。

对于低级优化,编译器比您更擅长优化代码。

让编译器完成其工作。在这种情况下,最坏的情况是编译器隐式地将代码更改为您编写的内容。连接 2-3 个字符串可能比构造 StringBuilder 更有效,因此最好保持原样。编译器在这方面最清楚什么。