자바에서 String 하면 문자열이 떠오를 것이다.

String str1 = "Hello";

String str2 = " World";

라고 한다면 두개의 객체가 생성되어 각각 하나의 문자열을 가진다.

그리고 이 문자열을 더하는 행위를 했을 때, 또 다른 객체를 생성하여 받아야한다.

String str = str1+str2; //"Hello World" 이렇게 되는 것이다.

이러한 행위는 메모리 할당과 메모리 해제를 발생시키기 때문에 성능이 저하된다.

 

그래서 대안으로 StringBuilder 가 있는 것이다.

StringBuilder는 새로운 객체를 만들어 줄 필요 없이 하나의 객체에 기존의 문자열을 덧붙이는 방식을 사용하기 때문에 부하가 적으며 상대적으로 속도도 빠르다.

따라서 긴 문자열을 더하는 상황이 발생한다면 StringBuilder를 사용하면 효과적이다.

 

그러면 StringBuilder의 메소드를 살펴보면서 사용 방법을 소개하겠다.

 

append - 문자열 추가

StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" World");
System.out.println(sb);
Hello World

 

delete - 문자열 제거

StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" World");
System.out.println(sb);
		
sb.delete(2, 4); //2번자리에서 4번자리 전까지 (2,3번 자리 문자 제거)
System.out.println(sb);
Hello World
Heo World

 

 

deleteCharAt - 특정 문자만 제거

StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" World");
System.out.println(sb);
		
sb.deleteCharAt(5);
System.out.println(sb);
Hello World
HelloWorld

 

setCharAt - 특정 위치 문자 변경

StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" World");
System.out.println(sb);
		
sb.setCharAt(0, 't');
System.out.println(sb);
Hello World
tello World

 

insert - 문자열 삽입

StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" World");
System.out.println(sb);
		
sb.insert(5, "!"); //매개변수로 받은 인덱스 위치부터 문자열 삽입
System.out.println(sb);
Hello World
Hello! World

 

reverse - 문자열 반전

StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" World");
System.out.println(sb);
		
sb.reverse();
System.out.println(sb);
Hello World
dlroW olleH

 

setLength - 문자열 길이 조절

현재 문자열 길이보다 짧게 설정하면 그 길이 이외의 문자열은 제거됨

현재 문자열 길이보다 길게 설정하면 공백으로 채워짐

StringBuilder sb = new StringBuilder();
sb.append("Hello").append(" World");
System.out.println(sb);
		
sb.setLength(7);
System.out.println(sb);
Hello World
Hello W
반응형

+ Recent posts