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

Я пытаюсь объединить строки в Java. Почему это не работает?

public class StackOverflowTest { public static void main(String args[]) { int theNumber = 42; System.out.println("Your number is " . theNumber . "!"); } } 

Вы можете объединить строки с помощью оператора + :

 System.out.println("Your number is " + theNumber + "!"); 

theNumber неявно преобразуется в строку "42" .

Оператор конкатенации в java равен + , а не .

Прочтите это (включая все подразделы) перед началом работы. Попытка перестать думать о php-пути;)

Чтобы расширить ваш взгляд на использование строк в Java – оператор + для строк фактически преобразуется (компилятором) во что-то похожее:

 new StringBuilder().append("firstString").append("secondString").toString() 

На этот вопрос есть два основных ответа:

  1. [simple] Используйте оператор + (конкатенация строк). "your number is" + theNumber + "!" (как указано в другом месте)
  2. [less simple]: Используйте StringBuilder (или StringBuffer ).
 StringBuilder value; value.append("your number is"); value.append(theNumber); value.append("!"); value.toString(); 

Я рекомендую против таких операций:

 new StringBuilder().append("I").append("like to write").append("confusing code"); 

Изменить: начиная с java 5 оператор конкатенации строк преобразуется в вызовы StringBuilder компилятором. Из-за этого оба метода выше равны.

Примечание: Spaceisavaluablecommodity, asthissentancedmonstrates.

Предостережение. Пример 1 ниже генерирует несколько экземпляров StringBuilder и менее эффективен, чем пример 2 ниже

Пример 1

 String Blam = one + two; Blam += three + four; Blam += five + six; 

Пример 2.

 String Blam = one + two + three + four + five + six; 

Из коробки у вас есть 3 способа вставить значение переменной в String как вы пытаетесь достичь:

1. Самый простой способ

Вы можете просто использовать оператор + между String и любым объектом или примитивным типом, он автоматически объединяет String и

  1. В случае объекта значение String.valueOf(obj) соответствующее String.valueOf(obj) « null », если obj равно null иначе значение obj.toString() .
  2. В случае примитивного типа эквивалент String.valueOf() .

Пример с ненулевым объектом:

 Integer theNumber = 42; System.out.println("Your number is " + theNumber + "!"); 

Вывод:

 Your number is 42! 

Пример с null объектом:

 Integer theNumber = null; System.out.println("Your number is " + theNumber + "!"); 

Вывод:

 Your number is null! 

Пример с примитивным типом:

 int theNumber = 42; System.out.println("Your number is " + theNumber + "!"); 

Вывод:

 Your number is 42! 

2. Явный способ и потенциально наиболее эффективный

Вы можете использовать StringBuilder (или StringBuffer streamобезопасную устаревшую копию), чтобы построить свою String с помощью методов append .

Пример:

 int theNumber = 42; StringBuilder buffer = new StringBuilder() .append("Your number is ").append(theNumber).append('!'); System.out.println(buffer.toString()); // or simply System.out.println(buffer) 

Вывод:

 Your number is 42! 

За сценой это на самом деле то, как последние java-компиляторы преобразуют все конкатенации String выполненные с помощью оператора + , единственное отличие от предыдущего способа состоит в том, что у вас есть полный контроль .

Действительно, компиляторы будут использовать конструктор по умолчанию, поэтому емкость по умолчанию ( 16 ), поскольку они не имеют представления о том, какая конечная длина String будет построена, а это означает, что если конечная длина больше 16 , емкость будет обязательно который имеет цену в срок исполнения.

Поэтому, если вы заранее знаете, что размер вашей финальной String будет больше, чем 16 , будет гораздо эффективнее использовать этот подход, чтобы обеспечить лучшую начальную емкость. Например, в нашем примере мы создаем String , длина которой больше 16, поэтому для лучшей производительности ее следует переписать следующим образом:

Пример оптимизирован:

 int theNumber = 42; StringBuilder buffer = new StringBuilder(18) .append("Your number is ").append(theNumber).append('!'); System.out.println(buffer) 

Вывод:

 Your number is 42! 

3. Наиболее читаемый способ

Вы можете использовать методы String.format(locale, format, args) или String.format(format, args) которые полагаются на Formatter для построения вашей String . Это позволяет указать формат вашей финальной String , используя держатели мест, которые будут заменены значением аргументов.

Пример:

 int theNumber = 42; System.out.println(String.format("Your number is %d!", theNumber)); // Or if we need to print only we can use printf System.out.printf("Your number is still %d with printf!%n", theNumber); 

Вывод:

 Your number is 42! Your number is still 42 with printf! 

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

Java 8-way:

 StringJoiner sj1 = new StringJoiner(", "); String joined = sj1.add("one").add("two").toString(); // one, two System.out.println(joined); StringJoiner sj2 = new StringJoiner(", ","{", "}"); String joined2 = sj2.add("Jake").add("John").add("Carl").toString(); // {Jake, John, Carl} System.out.println(joined2); 

Для точной операции конкатенации двух строк используйте:

 file_names = file_names.concat(file_names1); 

В вашем случае используйте + вместо .

Для повышения производительности используйте str1.concat(str2) где str1 и str2 являются строковыми переменными.

Вы должны быть программистом PHP.

Используйте знак + .

 System.out.println("Your number is " + theNumber + "!"); 

«+» вместо «.».

Используйте + для конкатенации строк.

 "Your number is " + theNumber + "!" 

Это должно работать

 public class StackOverflowTest { public static void main(String args[]) { int theNumber = 42; System.out.println("Your number is " + theNumber + "!"); } } 

В символе java concatenate есть « + ». Если вы пытаетесь объединить две или три строки при использовании jdbc, используйте это:

 String u = t1.getString(); String v = t2.getString(); String w = t3.getString(); String X = u + "" + v + "" + w; st.setString(1, X); 

Здесь «” используется только для пространства.

В Java символом конкатенации является «+», а не «.».

“+” не “.”

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

Первый метод: вы можете использовать знак «+» для конкатенации строк, но это всегда происходит в печати. Другой способ: class String включает метод конкатенации двух строк: string1.concat (string2);

 import com.google.common.base.Joiner; String delimiter = ""; Joiner.on(delimiter).join(Lists.newArrayList("Your number is ", 47, "!")); 

Это может быть чрезмерным ответом на вопрос оп, но хорошо знать о более сложных действиях соединения. Этот вопрос в stackoverflow высоко оценивает поисковые запросы Google в этой области, поэтому хорошо знать.

вы можете использовать stringbuffer, stringbuilder и, как и все, что было до меня упомянуто, «+». Я не уверен, насколько быстро «+» (я думаю, что это самый быстрый для более коротких строк), но дольше я думаю, что построитель и буфер примерно равны (построитель немного быстрее, потому что он не синхронизирован).

Вы можете объединить строки с помощью оператора + :

 String a="hello "; String b="world."; System.out.println(a+b); 

Вывод:

hello world.

это оно

здесь приведен пример чтения и конкатенации 2 строк без использования третьей переменной:

 public class Demo { public static void main(String args[]) throws Exception { InputStreamReader r=new InputStreamReader(System.in); BufferedReader br = new BufferedReader(r); System.out.println("enter your first string"); String str1 = br.readLine(); System.out.println("enter your second string"); String str2 = br.readLine(); System.out.println("concatenated string is:" + str1 + str2); } } 
  • Добавление кавычек в строку в VBScript
  • Как конкатенировать значения int в java?
  • Объединить строки по конкретным столбцам данных
  • Давайте будем гением компьютера.