▸JAVA/라이브러리(API)

java.lang.StringBuilder (문자열) 주요 메소드 [1/2]

코데방 2019. 12. 10.
728x90

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"
	}
}
728x90

댓글

💲 추천 글