StringBuilder와 StringBuffer 클래스도 String 클래스와 같이 문자열을 다루는 클래스입니다. 다만, String 클래스가 문자열을 생성자로 넣어 인스턴스를 한 번 생성하고 나면 인스턴스가 가진 문자열 값을 변경하지 못하는 단점을 보완한 클래스입니다. 즉, 같은 인스턴스 안의 문자열(char 배열) 필드 값을 추가하거나 변경할 수 있도록 되어 있습니다. 또한 원본 문자열을 바꿀 수 있는만큼 문자열을 다루는 메소드도 더 많이 포함되어 있습니다.
두 가지 클래스는 모두 쓰임과 메소드가 같지만, StringBuffer는 여러곳에서 동시에 같은 문자열 인스턴스에 접근할 때 중복 점유를 막을 수 있는 장치가 되어 있습니다(동기화 처리). 때문에 StringBuilder에 비해 좀 더 무겁습니다. 따라서 특별한 이유가 없다면 StringBuilder를 사용하는 것이 일반적입니다.
[ String 클래스와 동일 메소드 ]
- charAt() - 특정 인덱스 위치의 문자 반환
- indexOf() / lastIndexOf() - 문자열 검색해서 위치 반환
- length() - 문자열 길이 반환
- replace() - 검색된 문자열 교체
- substring() - 특정 인덱스 범위 내 문자열을 복사해서 새로 생성된 인스턴스 반환
- toString() - 문자열 출력
[ append() ]
- 문자열 추가
package study.first;
public class Study {
public static void main(String[] args) {
StringBuilder a = new StringBuilder("Hello");
a.append(" World");
System.out.println(a); // "Hello World"
}
}
[ capacity() ]
- String 클래스와 다르게 char[] 배열 사이즈를 여유 있게 잡아둠
- 현재 char[] 배열이 가진 사이즈 정보를 반환
- length()는 실제 데이터가 들어있는 문자열 자체의 길이이고 capacity()는 현재 배열 사이즈
- append() 등 문자열 조정할 때 배열 사이즈가 자동으로 변경됨
package study.first;
public class Study {
public static void main(String[] args) {
StringBuilder a = new StringBuilder("Hello");
System.out.println(a.length()); // 5
System.out.println(a.capacity()); // 21
a.append(" World");
System.out.println(a); // "Hello World"
System.out.println(a.length()); // 11
System.out.println(a.capacity()); // 21
a.append(" Hi everybody!!!!");
System.out.println(a); // Hello World Hi everybody!!!!
System.out.println(a.length()); // 28
System.out.println(a.capacity()); // 44
}
}
[ delete() ]
- 매개변수로 전달받은 인덱스 사이의 문자열 제거
- parameter : 인덱스 시작점, 인덱스 끝점 + 1
- 문자열에서 시작과 끝은 항상 "시작 <= 범위 < 끝" 형태
package study.first;
public class Study {
public static void main(String[] args) {
StringBuilder a = new StringBuilder("Hello");
a.append(" World");
System.out.println(a); // "Hello World"
a.delete(6, 9); // (6~8 삭제)
System.out.println(a); // "Hello ld"
}
}
[ deleteCharAt() ]
- 특정 인덱스의 한 문자만 삭제
- delete() 메소드에서 범위를 한 글자만 잡는 것과 동일한 효과
package study.first;
public class Study {
public static void main(String[] args) {
StringBuilder a = new StringBuilder("Hello");
a.append(" World");
System.out.println(a); // "Hello World"
// a.delete(6,7) 과 같음
a.deleteCharAt(6);
System.out.println(a); // "Hello orld"
}
}
[ insert() ]
- 특정 위치에 문자열 삽입
- 매개변수로 받은 인덱스 위치부터 문자열을 삽입해줌
package study.first;
public class Study {
public static void main(String[] args) {
StringBuilder a = new StringBuilder("He World");
a.insert(2, "llo");
System.out.println(a); // "Hello World"
a.insert(5, 55);
System.out.println(a); // "Hello55 World"
}
}
'■ JAVA > Study' 카테고리의 다른 글
[JAVA] java.lang.Math (수학계산) 주요 메소드 [1/1] (0) | 2021.02.27 |
---|---|
[JAVA] java.lang.StringBuilder (문자열) 주요 메소드 [2/2] (0) | 2021.02.25 |
[JAVA] java.lang.Object 주요 메소드 (0) | 2021.02.25 |
[JAVA] 래퍼 클래스 (Wrapper Class) (0) | 2021.02.24 |
[JAVA] 배열 , Array (다차원배열, 배열문제 ) (0) | 2021.02.23 |