如何在java中连接字符?

时间:2008-11-30 00:22:50

标签: java character concatenation

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

我能做到

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

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

由于

12 个答案:

答案 0 :(得分:50)

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

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

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

答案 1 :(得分:23)

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

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

答案 2 :(得分:7)

如果你有一堆字符并希望将它们连成字符串,为什么不这样做

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

答案 3 :(得分:5)

您可以使用String constructor

System.out.println(new String(new char[]{a,b,c}));

答案 4 :(得分:4)

您需要通过使用字符串(即使是空字符串)启动序列来告诉编译器您要进行字符串连接。像这样:

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

答案 5 :(得分:2)

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

String s = char1+""+char2+char3;

答案 6 :(得分:1)

您需要一些描述的String对象来保存连接字符数组,因为char类型只包含一个字符。例如,

StringBuilder sb = new StringBuilder('a').append('b').append('c');
System.out.println(sb.toString);

答案 7 :(得分:1)

公共类首字母{

public static void main (String [] args) {

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

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


}   

}

答案 8 :(得分:0)

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

String s = String.format("%s%s", 'a', 'b'); // s is "ab"

答案 9 :(得分:0)

  

这是连接或附加字符

的非常简单的方法
       StringBuilder desc = new StringBuilder(); 
       String Description="this is my land"; 
       desc=desc.append(Description.charAt(i));

答案 10 :(得分:-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;
}

答案 11 :(得分:-2)

System.out.print(a + "" + b + "" + c);