41

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

我可以

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

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

谢谢

4

12 回答 12

62

你想用它们做一个字符串吗?

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 指出的那样,编译器处理了一系列字符串。

上面的目的是说明编译器做了什么,而不是告诉你应该做什么。

于 2008-11-30T00:28:46.703 回答
25

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

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 更有效,因此最好保持原样。编译器知道在这方面什么是最好的。

于 2008-11-30T01:56:43.203 回答
9

如果您有一堆字符并想将它们连接成一个字符串,为什么不这样做

System.out.println("" + char1 + char2 + char3); 

?

于 2008-11-30T00:30:58.040 回答
7

您可以使用String 构造函数

System.out.println(new String(new char[]{a,b,c}));
于 2008-11-30T06:33:59.620 回答
4

您需要通过以字符串开始序列(甚至是空字符串)来告诉编译器您想要进行字符串连接。像这样:

System.out.println("" + char1 + char2 + char3...);
于 2008-11-30T00:30:06.997 回答
2

System.out.println(char1+""+char2+char3)

或者

String s = char1+""+char2+char3;
于 2013-03-21T16:50:40.793 回答
1

您需要一个具有某种描述的 String 对象来保存您的串联字符数组,因为该char类型将只保存一个字符。例如,

StringBuilder sb = new StringBuilder('a').append('b').append('c');
System.out.println(sb.toString);
于 2008-11-30T00:29:53.427 回答
1

公共类首字母{

public static void main (String [] args) {

    char initialA = 'M';
    char initialB = 'P';
    char initialC = 'T';

    System.out.println("" + initialA + initialB + initialC );


}   

}

于 2009-09-02T22:32:18.463 回答
1

我真的不认为自己是一个 Java 程序员,但只是想我会在这里“为了完整性”添加它;使用(C-inspired)String.format静态方法:

String s = String.format("%s%s", 'a', 'b'); // s is "ab"
于 2016-10-29T06:16:10.753 回答
0

这是连接或附加字符的非常简单的方法

       StringBuilder desc = new StringBuilder(); 
       String Description="this is my land"; 
       desc=desc.append(Description.charAt(i));
于 2018-04-19T11:48:01.523 回答
-1

从字符串中选择字符并附加到字符串变量的简单示例

private static String findaccountnum(String holdername, String mobile) {

    char n1=holdername.charAt(0);
    char n2=holdername.charAt(1);
    char n3=holdername.charAt(2);
    char n4=mobile.charAt(0);
    char n5=mobile.charAt(1);
    char n6=mobile.charAt(2);
    String number=new StringBuilder().append(n1).append(n2).append(n3).append(n4).append(n5).append(n6).toString();

    return number;
}
于 2017-04-17T19:24:14.940 回答
-2
System.out.print(a + "" + b + "" + c);
于 2016-08-09T09:40:04.147 回答