Подтвердить что ты не робот

Как конкатенировать символы в java?

Как вы объединяете символы в java? Конкатенация строк потребует только + между строками, но конкатенация символов с использованием + изменит значение char на ascii и, следовательно, даст числовой вывод. Я хочу сделать System.out.println(char1+char2+char3... и создать такое строковое слово.

Я мог бы сделать

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

Но это приведет меня только к символам в 1 строке. Мне нужно это как строка. Любая помощь будет оценена.

Спасибо

4b9b3361

Ответ 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();

Изменить: как указано в ярлыке, вы также можете сделать это:

"" + 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, поэтому лучше оставить его как есть. Компилятор знает, что лучше всего в этом отношении.

Ответ 3

Если у вас есть куча символов и вы хотите связать их с цепочкой, почему бы не сделать

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

?

Ответ 4

Вам нужно сообщить компилятору, что вы хотите выполнить конкатенацию String, запустив последовательность со строкой, даже пустой. Например:

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

Ответ 5

Вы можете использовать конструктор String.

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

Ответ 6

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

или

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

Ответ 7

Вам нужен объект String некоторого описания для хранения вашего массива конкатенированных символов, так как тип char будет содержать только один символ. например,

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

Ответ 8

инициалы открытого класса {

public static void main (String [] args) {

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

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


}   

}

Ответ 9

Я действительно не считаю себя программистом на Java, но просто подумал, что добавлю его здесь "для полноты"; используя статический метод (C-inspired) String.format:

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

Ответ 10

простой пример выбора символа из строки и добавления к строковой переменной

private static String findaccountnum (имя владельца строки, строка для мобильных устройств) {

    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

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