Как объединить символы в Java?

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

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

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

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

Спасибо

См. другой вопрос, чтобы узнать, ПОЧЕМУ использование оператора '+' не удалось (оттуда любимый ответ).

cellepo 21.11.2018 05:39
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
37
1
232 605
12

Ответы 12

Хотите сделать из них веревочку?

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): Исправлено сравнение добавления строк, поскольку, как указывает Клетус, компилятор обрабатывает серию строк.

Цель вышеизложенного - проиллюстрировать, что делает компилятор, а не сказать вам, что вы должны делать.

вам не хватает toString () в конце первой строки кода.

akuhn 30.11.2008 04:48

Вы не правы. "a" + "b" + "c" становится "abc" во время компиляции. Он оценивается только во время выполнения, если хотя бы один из этих операндов не может быть определен во время компиляции.

cletus 30.11.2008 04:50

@cletus Я только что проверил, и вы правы насчет "a" + "b" + "c". То же самое происходит с буквальными символами, но не при использовании ссылок на переменные. Спасибо, что просветили меня. :)

Dustin 30.11.2008 05:03

Создает StringBuilder или StringBuffer?

Eric 31.05.2012 01:30

До того, как появился StringBuilder, он использовал StringBuffer.

Dustin 31.05.2012 09:44

Поскольку Java 9, Java больше не использует StringBuilder для подобной конкатенации строк.

Simon Baars 12.01.2018 12:36

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

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

Извините, но для констант это плохой совет. Компилятор оптимизирует "" + 'a' + 'b' во время компиляции, но не может оптимизировать вашу версию, поэтому это выражение времени выполнения. Если вы имеете дело с переменными символами, этот подход может иметь смысл.

cletus 30.11.2008 04:49

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

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

Если у вас есть куча символов и вы хотите объединить их в строку, почему бы не сделать

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

?

Я не собирался отвечать на этот вопрос, но здесь есть два ответа (за которые голосуют!), Которые просто неверны. Рассмотрим эти выражения:

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

действительно вы правы. было бы плохим дизайном и глупо, если бы "a" + "b" создавали конструктор строк. и я также согласен с тем, что всего для 1-5 конкатей делать это с +, вероятно, лучше, чем создавать проблемы с созданием StringBuilder.

Johannes Schaub - litb 30.11.2008 06:59

Компилятор делает это за вас, но да, в вашем последнем примере именно это выводит компилятор. Я полностью согласен с тем, что вы, не должен, делаете это сами, но я думаю, что важно понимать, что происходит.

Dustin 30.11.2008 08:17

Я включил ваши предложения в свой ответ.

Dustin 30.11.2008 08:24

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

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

Или java.nio.CharBuffer.wrap (новый char [] {a, b, c}). :)

Tom Hawtin - tackline 30.11.2008 15:31

CharBuffer.wrap предоставляет не String, а CharBuffer, который реализует CharSequence.

Dennis C 30.11.2008 19:29

fwiw: String также реализует CharSequence (однако, конечно, это не означает, что CharBuffer можно использовать непосредственно как String).

cellepo 21.11.2018 05:21

инициалы публичного класса {

public static void main (String [] args) {

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

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


}   

}

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

или же

String s = char1+""+char2+char3;
System.out.print(a + "" + b + "" + c);

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

Simon Hänisch 09.08.2016 12:50

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

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

А если это для печати, System.out.format("%s%s", 'a', 'b').

Ole V.V. 22.11.2016 13:18

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

частная статическая строка 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;
}

this is very simple approach to concatenate or append the character

       StringBuilder desc = new StringBuilder(); 
       String Description = "this is my land"; 
       desc=desc.append(Description.charAt(i));

Другие вопросы по теме