StringBuffer и StringBuilder
- Отличие между String, StringBuilder, StringBuffer
- Конструкторы StringBuilder
- Методы charAt(), setCharAt()
- Метод append()
- Метод insert()
- Метод reverse()
- Методы delete() и deleteCharAt()
- Метод replace()
- Методы equals() и hashCode()
1. Отличие между String, StringBuilder, StringBuffer
- Классы StringBuffer и StringBuilder в Java используются, когда возникает необходимость сделать много изменений в строке символов.
- В отличие от
String
, объекты типаStringBuffer
иStringBuilder
могут быть изменены снова и снова. - В Java
StringBuilder
был введен начиная с Java 5. - Основное различие между
StringBuffer
иStringBuilder
в Java является то, что методыStringBuilder
не являются безопасными для потоков (несинхронизированные). - Рекомендуется использовать
StringBuilder
всякий раз, когда это возможно, потому что он быстрее, чемStringBuffer
в Java. - Однако, если необходима безопасность потоков, наилучшим вариантом являются объекты
StringBuffer
.
2. Конструкторы StringBuilder
- StringBuilder() - объект
StringBuilder
можно создать без параметров, при этом в нем будет зарезервировано место для размещения 16 символов. - StringBuilder(int size) - вы также можете передать конструктору целое число, для того чтобы явно задать требуемый размер буфера.
- StringBuilder(String str) - вы можете передать конструктору строку, при этом она будет скопирована в объект и дополнительно к этому в нем будет зарезервировано место еще для 16 символов.
- StringBuilder(CharSequence chars)
В следующем примере создадим объект класса StringBuilder
, и выведем на консоль его размер методом length()
. Метод capacity()
возвращает размер буфера:
public class StringBuilderExample1 {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder("Hello");
System.out.println("string = " + stringBuilder);
System.out.println("length = " + stringBuilder.length());
System.out.println("capacity = " + stringBuilder.capacity());
}
}
3. Методы charAt(), setCharAt()
Метод charAt() возвращает символ в указанной позиции. А setCharAt() изменяет символ в указанной позиции:
public class SetCharAtExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
System.out.println(sb);
System.out.println("charAt(1) = " + sb.charAt(1));
sb.setCharAt(1, 'i');
sb.setLength(2);
System.out.println(sb);
}
}
4. Метод append()
Метод append() присоединяет подстроку к строке:
public class AppendExample {
public static void main(String[] args) {
int a = 42;
StringBuilder sb = new StringBuilder(40);
String s = sb.append("a = ").append(a).append("!").toString();
System.out.println(s);
}
}
5. Метод insert()
Метод insert() вставляет подстроку в указанную позицию:
public class InsertExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("I Java!");
sb.insert(2, "like ");
System.out.println(sb);
}
}
6. Метод reverse()
Используется для инвертирования строки:
public class ReverseExample {
public static void main(String[] args) {
StringBuilder s = new StringBuilder("abcdef");
System.out.println(s);
s.reverse();
System.out.println(s);
}
}
7. Методы delete() и deleteCharAt()
Метод delete() удаляет подстроку, используя указанные позиции.
Метод deleteCharAt() удаляет символ с указанной позиции:
public class DeleteExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("This is a test.");
sb.delete(4, 7);
System.out.println("После delete: " + sb);
sb.deleteCharAt(0);
System.out.println("После deleteCharAt: " + sb);
}
}
8. Метод replace()
Заменяет подстроку в указанной позиции другой:
public class ReplaceExample {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder("Этo простой тест.");
stringBuilder.replace(4, 11, "был");
System.out.println("После замены: " + stringBuilder);
}
}
9. Методы equals() и hashCode()
Классы
StringBuilder
и StringBuffer
не переопределяют методы equals() и hashCode(). Они используют реализацию класса Object
:public class StringBuilderEquals {
public static void main(String[] args) {
StringBuilder stringBuilder1 = new StringBuilder("Hello");
StringBuilder stringBuilder2 = new StringBuilder("Hello");
System.out.println(stringBuilder1.equals(stringBuilder2));
System.out.println(stringBuilder1 == stringBuilder2);
}
}
Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.