Как объединить две строки в Java?
Я пытаюсь объединить строки в Java. Почему это не работает?
public class StackOverflowTest { public static void main(String args[]) { int theNumber = 42; System.out.println("Your number is " . theNumber . "!"); } }
- Сочетание строк в Java всегда приводит к созданию новых строк в памяти?
- Конкатенация строк Java String
- Зачем использовать StringBuffer в Java вместо оператора конкатенации строк
- Как конкатенировать строки в выражении EL?
- Как объединить строки?
- Получение строк, распознаваемых как имена переменных в R
- Использование LINQ для конкатенации строк
- Создание оператора конкатенации строк в R
- Ярлыки в Objective-C для конкатенации NSStrings
- Конкатенация строк без оператора «+»
- Объединение нулевых строк в Java
- Как эффективно конкатенировать строки в Go?
- Как конкатенировать строку в EL?
Вы можете объединить строки с помощью оператора +
:
System.out.println("Your number is " + theNumber + "!");
theNumber
неявно преобразуется в строку "42"
.
Оператор конкатенации в java равен +
, а не .
Прочтите это (включая все подразделы) перед началом работы. Попытка перестать думать о php-пути;)
Чтобы расширить ваш взгляд на использование строк в Java – оператор +
для строк фактически преобразуется (компилятором) во что-то похожее:
new StringBuilder().append("firstString").append("secondString").toString()
На этот вопрос есть два основных ответа:
- [simple] Используйте оператор
+
(конкатенация строк)."your number is" + theNumber + "!"
(как указано в другом месте) - [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
и
- В случае объекта значение
String.valueOf(obj)
соответствующееString.valueOf(obj)
«null
», еслиobj
равноnull
иначе значениеobj.toString()
. - В случае примитивного типа эквивалент
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); } }