[Java] StringBuilder

H_rin·2023년 9월 5일

StringBuilder 클래스

StringBuilder, StringBuffer, String 클래스는 문자열을 다루는 클래스이다.

내부적으로 StringBuilder 클래스는 문자열을 저장하기 위한 메모리 공간을 지니고 있다.
그리고 이 메모리 공간은 String 클래스와 달리 문자를 추가하거나 삭제하는 것이 가능하다.

즉, String 클래스가 문자열을 생성자로 넣어 인스턴스를 한번 생성하고 나면

인스턴스가 가진 문자열 값을 변경하지 못하는 단점을 보완한 클래스이다.


StringBuilder 메소드

아래의 메소드는 String 클래스와 동일함.

  • charAt() - 특정 인덱스 위치의 문자 반환
  • indexOf() / lastIndexOf() - 문자열 검색해서 위치 반환
  • length() - 문자열 길이 반환
  • replace() - 검색된 문자열 교체
  • substring() - 특정 인덱스 범위 내 문자열을 복사해서 새로 생성된 인스턴스 반환
  • toString() - 문자열 출력

여기부터는 StringBuilder에 존재하는 메소드이다.

append()

  • 문자열 추가
public class Main {
	public static void main(String[] args) {

		StringBuilder a = new StringBuilder("Hello");
		
		a.append(" World");
		System.out.println(a); 		// "Hello World"		
	}
}

reverse()

  • 해당 문자 전체를 뒤집는다.
public class Main {
	public static void main(String[] args) {

		StringBuilder a = new StringBuilder("Hello");
		
		a.reverse();
		System.out.println(a.toString()); 		// "Hello World"		
	}
}

delete()

  • 매개변수로 전달받은 인덱스 사이의 문자열 제거
  • parameter : 인덱스 시작점, 인덱스 끝점 + 1
  • 문자열에서 시작과 끝은 항상 "시작<=범위<끝" 형태
public class Main {
	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() 메소드에서 범위를 한 글자만 잡는 것과 동일한 효과
public class Main {
	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()

  • 특정 위치에 문자열 삽입
  • 매개변수로 받은 인덱스 위치부터 문자열을 삽입
public class Main {
	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"	
	}
}
profile
hyerin / 한단계씩 배워가는 백엔드 개발자..(‘•̀ ▽ •́ )φ

0개의 댓글