Как вы объединяете символы в java? Для объединения строк потребуется только + между строками, но объединение символов с использованием + изменит значение char на ascii и, следовательно, даст числовой вывод. Я хочу сделать System.out.println(char1+char2+char3... и создать такое строковое слово.
я мог бы сделать
System.out.print(char1);
System.out.print(char2);
System.out.print(char3);
Но это даст мне символы только в 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): Исправлено сравнение добавления строк, поскольку, как указывает Клетус, компилятор обрабатывает серию строк.
Цель вышеизложенного - проиллюстрировать, что делает компилятор, а не сказать вам, что вы должны делать.
вам не хватает toString () в конце первой строки кода.
Вы не правы. "a" + "b" + "c" становится "abc" во время компиляции. Он оценивается только во время выполнения, если хотя бы один из этих операндов не может быть определен во время компиляции.
@cletus Я только что проверил, и вы правы насчет "a" + "b" + "c". То же самое происходит с буквальными символами, но не при использовании ссылок на переменные. Спасибо, что просветили меня. :)
Создает StringBuilder или StringBuffer?
До того, как появился StringBuilder, он использовал StringBuffer.
Поскольку Java 9, Java больше не использует StringBuilder для подобной конкатенации строк.
Вам нужен объект String с некоторым описанием для хранения вашего массива конкатенированных символов, поскольку тип char будет содержать только один символ. например.,
StringBuilder sb = new StringBuilder('a').append('b').append('c');
System.out.println(sb.toString);
Извините, но для констант это плохой совет. Компилятор оптимизирует "" + 'a' + 'b' во время компиляции, но не может оптимизировать вашу версию, поэтому это выражение времени выполнения. Если вы имеете дело с переменными символами, этот подход может иметь смысл.
Вам нужно сообщить компилятору, что вы хотите выполнить конкатенацию строк, начав последовательность со строки, даже пустой. Вот так:
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.
Компилятор делает это за вас, но да, в вашем последнем примере именно это выводит компилятор. Я полностью согласен с тем, что вы, не должен, делаете это сами, но я думаю, что важно понимать, что происходит.
Я включил ваши предложения в свой ответ.
Вы можете использовать Конструктор строк.
System.out.println(new String(new char[]{a,b,c}));
Или java.nio.CharBuffer.wrap (новый char [] {a, b, c}). :)
CharBuffer.wrap предоставляет не String, а CharBuffer, который реализует CharSequence.
fwiw: String также реализует CharSequence (однако, конечно, это не означает, что CharBuffer можно использовать непосредственно как String).
инициалы публичного класса {
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);
пожалуйста, исправьте свой код, сделав отступ с четырьмя пробелами и добавив краткое объяснение того, как работает ваш ответ.
Я не считаю себя программистом на Java, но просто подумал, что добавлю это здесь «для полноты»; используя (вдохновленный C) статический метод String.format:
String s = String.format("%s%s", 'a', 'b'); // s is "ab"
А если это для печати, System.out.format("%s%s", 'a', 'b').
простой пример выбора символа из строки и добавления к строковой переменной
частная статическая строка 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));
См. другой вопрос, чтобы узнать, ПОЧЕМУ использование оператора '+' не удалось (оттуда любимый ответ).