티스토리 뷰
주의 사항!
- 이 글은 제가 직접 공부하는 중에 작성되고 있습니다.
- 따라서 제가 이해하는 그대로의 내용이 포함됩니다.
- 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다.
문자열을 저장하는 String은 문자열을 수정할 수 없습니다. 예를 들어 String의 replace() 메서드는 내부의 문자열을 대치하는 것이 아니라, 대치된 새로운 문자열을 리턴합니다. String 객체를 + 연산할 경우에도 마찬가지입니다. 문자열을 결합하는 + 연산자를 많이 사용하면 할수록 그만큼 String 객체의 수가 늘어나기 때문에, 프로그램 성능을 느리게 하는 요인이 됩니다.
문자열을 변경하는 작업이 많을 경우에는 String 클래스를 사용하는 것보다는 java.lang 패키지의 StringBuffer 또는 StringBuilder 클래스를 사용하는 것이 좋습니다. 이 두 클래스는 내부 버퍼(buffer : 데이터를 임시로 저장하는 메모리)에 문자열을 저장해 두고, 그 안에서 추가, 수정, 삭제 작업을 할 수 있도록 설계되어 있습니다.
StringBuffer와 StringBuilder의 사용 방법은 동일한다 차이점은 StringBuffer는 멀티 스레드 환경에서 사용할 수 있도록 동기화가 적용되어 있어 스레드에 안전하지만, StringBuilder는 단일 스레드 환경에서만 사용하도록 설계되어 있습니다. 아직 스레드를 학습하지 않았기 때문에 여기서는 StringBuilder 클래스만 자세히 살펴보기로 합니다.
StringBuilder 클래스는 몇 가지 생성자를 제공하고 있습니다. 기본 생성자인 Stringbuilder()는 16개의 문자들을 저장할 수 있는 초기 버퍼를 만들고, StringBulider(int capacity) 생성자는 capacity로 주어진 개수만큼 문자들을 저장할 수 있는 초기 버퍼를 만듭니다. StringBuilder는 버퍼가 부족할 경우 자동으로 버퍼 크기를 늘리기 때문에 초기 버퍼의 크기는 그다지 중요하지 않습니다. StringBuilder(String str) 생성자는 str로 주어진 매개 값을 버퍼의 초기 값으로 저장합니다.
StringBuilder sb = new StringBuilder();
StringBuilder sb = new StringBuilder(16);
StringBuilder sb = new StringBuilder("java");
StringBuilder 객체가 생성되면 버퍼 내에서 문자 추가, 삽입, 삭제 등의 작업을 할 수 있습니다. 해당 기능을 이용하기 위해 다음의 메서드들을 이용합니다.
메서드 | 설명 |
append(...) | 문자열 끝에 주어진 매개 값을 추가 |
insert(int offset, ...) | 문자열 중간에 주어진 매개 값을 추가 |
delete(int start, int end) | 문자열의 일부분을 삭제 |
deleteCharAt(int index) | 문자열에서 주어진 index의 문자를 삭제 |
replace(int start, int end, String str) | 문자열의 일부분을 다른 문자열로 대치 |
reverse() | 문자열의 순서를 뒤바꿈 |
setCharAt(int index, char ch) | 문자열에서 주어진 index의 문자를 다른 문자로 대치 |
append()와 insert() 메서드는 매개 변수가 다양한 타입으로 오버 로딩되어 있기 때문에 대부분의 값을 문자로 초가 또는 삽입할 수 있습니다.
//Main.java
package Example;
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("java ");
sb.append("Program Study");
System.out.println(sb.toString());
sb.insert(4, "2");
System.out.println(sb.toString());
sb.setCharAt(4, '6');
System.out.println(sb.toString());
sb.replace(6, 13, "Book");
System.out.println(sb.toString());
sb.delete(4, 5);
System.out.println(sb.toString());
int length = sb.length();
System.out.println("총 문자수 : " + length);
String result = sb.toString();
System.out.println(result);
}
}
/*
실행결과
java Program Study
java2 Program Study
java6 Program Study
java6 Book Study
java Book Study
총 문자수 : 15
java Book Study
*/
'공부 일지 > JAVA 공부 일지' 카테고리의 다른 글
자바, Arrays 클래스 (0) | 2021.04.21 |
---|---|
자바, 정규 표현식과 Pattern 클래스 (0) | 2021.04.21 |
자바, StringTokenizer 클래스 (0) | 2021.04.21 |
자바, String 클래스 (0) | 2021.04.20 |
자바, Class 클래스 (0) | 2021.04.20 |