자바에서 문자열을 다루는 클래스 종류에는 String, StringBuilder, StringBuffer 이 있다.
이전 포스팅에서는 String을 공부 해봤으니 참고!
StringBuilder, StringBuffer
- 주로 문자열을 연산(추가,변경)할 때 사용된다.
- 버퍼(buffer)라고 하는 독립적인 공간에 문자열을 저장,추가 하여 공간의 낭비도 적으면서 연산속도가 빠르다.
- 속도가 불변인 String 과 다르게 StringBuffer와 StringBuilder 클래스는 가변성을 띄고 있다.
제공하는 메서드도 똑같고 사용하는 방법도 동일하지만 차이점이라고 하면,
StringBuffer는 multi thread 에 안전하며 StringBuilder는 single thread에만 적합하다.
StringBuilder 사용 예제
package Lang;
import java.util.Scanner;
public class StringBuilderTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
// StringBuilder 생성
StringBuilder sb = new StringBuilder();
// StringBulider 객체 생성
sb.append("aaa");
// append : 문자열 끝에 추가
// 지금 빈칸으로 시작했으니가 그냥 aaa 쓴거나 마찬가지.
sb.append("bbb");
sb.append("ccc");
System.out.println(sb.toString()); // String으로 변환
System.out.println("sb.indexOf(\"ab\") : " + sb.indexOf("ab"));
// indexOf() : (ab) 문자열이 있는 게 몇번째니?
sb.insert(2, "kkk");
// insert : 2번째 있는게 지워지는게 아니라 뒤로 미뤄진거
System.out.println(sb.toString());
sb.delete(3, 5);
// delete : 3과 5를 삭제.
System.out.println(sb.toString());
// System.out.println(sb.toString()); 과 System.out.println(sb); 은 같은 결과메세지를
// 보여준다.
// 하지만 일부 Java 버전에서는 System.out.println(sb)와 같은 코드를 사용할 경우,
// 컴파일러에서 경고 메시지를 발생시키기도 한다
// 따라서 toString() 메소드를 명시적으로 호출하여 경고 메시지를 제거하는게 좋다
// 또한, toString() 메소드를 사용하면
// StringBuilder 객체를 문자열로 변환하는 것이 명시적으로 표시 코드의 가독성이 향상 됨.
Scanner sc = new Scanner(System.in);
String txt = "";
StringBuilder sb2 = new StringBuilder(); // 스트링빌더 생성하고
while (true) {
System.out.println("멈추려면 stop입력");
txt = sc.next();
if (txt.startsWith("stop")) {
// stratsWith : 이력받은 문자시작이 스탑.
break;
}
sb2.append(txt + "\n");
}
System.out.println(sb2.toString());
}
'JAVA' 카테고리의 다른 글
[JAVA] 컬렉션 프레임워크 (collection framework) (0) | 2023.03.06 |
---|---|
[JAVA] lang package - warpper class (0) | 2023.03.04 |
[JAVA] lang package - String (0) | 2023.03.04 |
[JAVA] lang package - object (0) | 2023.03.04 |
[JAVA] lang package (0) | 2023.03.04 |