Groovy поддерживает синтаксис литерала для создания StringBuilder/StringBuffer вместо обычногоGroovy буквального StringBuilder/StringBuffer
def sb = new StringBuilder()
Однако, я не могу вспомнить (или найти на Google) правильный синтаксис.
Groovy поддерживает синтаксис литерала для создания StringBuilder/StringBuffer вместо обычногоGroovy буквального StringBuilder/StringBuffer
def sb = new StringBuilder()
Однако, я не могу вспомнить (или найти на Google) правильный синтаксис.
Чтобы получить StringBuffer в один шаг, вы можете использовать
def sb = 'Hello'<<''
или даже:
def sb = ''<<'' //4 single quotes, not double quotes
для первоначально пустого.
Я думаю (но я мог ошибаться), причина использования StringBuffer, а не StringBuilder заключается в поддержании совместимости с Java 1.4.
Вы также должны использовать 'StringBuffer' в текущих версиях Java, если вам нужно конкатенировать строки поточно-безопасно –
Чтобы создать StringBuilder
text = 'Hello '
Дописывать
text <<= 'World!'
Кажется, что этот текст преобразуется из String в StringBuilder только при использовании оператора << <<. Кроме того, это фактически StringBuffer, а не StringBuilder –
Да, на самом деле мой пример может быть слишком упрощенным. Вам нужно преобразовать и переназначить в StringBuffer, как таковой оператор '<< ='. Позже вы можете просто использовать '<<'. Также вы правы в 'StringBuffer', так как они разрешили замену на месте с использованием оператора' [] '. – omerkudat
Я только что играл с StringBuilder/StringBuffer в Groovy.
Некоторые примеры приведены ниже:
// << operator example
def year = StringBuilder.newInstance()
year << 2
year << "0"
year << '1' << 4
assert year.toString() == "2014"
// You can use with operator
def month = StringBuilder.newInstance()
month.with {
append "0"
append '5'
}
assert month.toString() == "05"
// or just append String like in Java or you can leave parenthesis
def day = StringBuilder.newInstance()
day.append "1"
day.append('1')
assert day.toString() == '11'
// It's nice to know, that we can use StringBuilder directly in GString
def date = "$year-${month}-$day"
assert date == "2014-05-11"
Примечание: Используйте StringBuilder, когда используется только один поток. StringBuilder предоставляет API, совместимый с StringBuffer. StringBuffer синхронизирован, StringBuilder - нет. Проверьте это link для получения дополнительной информации.
'sb.append (" text ")' будет конкатенировать ваши строки – IgniteCoders