API - StringBuffer(Builder) ,StringTokenizer

JK·2022년 12월 24일
0

JAVA

목록 보기
20/28
post-thumbnail

StringBuffer와 StringBuilder의 등장

  • String은 메모리를 많이 차지하게 된다. 그리하여 생긴 것이 버퍼와 빌더이다
  • 이 클래스들은 모두 객체 내부에 있는 버퍼(buffer, 데이터를 임시로 저장하는 메모리)에 문자열의 내용을 저장해 두고 그 안에서 추가, 수정, 삭제 작업이 가능하다
    따라서 이 클래스들은 이용하면 새로운 객체를 만들지 않고도 문자열 조작을 할 수 있다.
  • StringBuffer와 StringBuilder는 거의 비슷하지만 StringBuilder가 속도가 더 빠르다

StringBuilder 주요 기능(메소드)

  • append(String str) : 문자열 str 추가
  • insert(int index, String str) : 특정 index에 문자열 str 추가
  • delete(int start, int end) : index위치 start부터 end앞 까지 삭제
  • deleteCharAt(int index) : index위치의 특정 문자 하나 삭제
  • int capacity() : 문자열 크기 반환
  • ensureCapacity(int size) : 버퍼의 크기를 size만큼 늘리는 메소드
  • trimToSize() : 과도한 버퍼 크기를 적당하게 줄이는 메소드
package com.lec.ex1_string;

public class Ex09_StringBuffer {
	public static void main(String[] args) {
		String str = "abc";
		StringBuffer strbuffer = new StringBuffer("abc");
		System.out.println("strBuffer의 해쉬코드 : " + strbuffer.hashCode());
		strbuffer.append("def");   //뒤에 def 추가
		System.out.println("append 후 : " + strbuffer);
		System.out.println("strBuffer의 해쉬코드 : " + strbuffer.hashCode());
		strbuffer.insert(3, "aaa");   //3번째에 aaa 추가
		System.out.println("insert 후 : " + strbuffer);
		System.out.println("strBuffer의 해쉬코드 : " + strbuffer.hashCode());
		strbuffer.delete(3, 6);
		System.out.println("delete 후 : " + strbuffer);
		System.out.println("strBuffer의 해쉬코드 : " + strbuffer.hashCode());
		int capacitySize = strbuffer.capacity();
		System.out.println("버퍼의 가용크기 :" + capacitySize);
		strbuffer.append("abcefjhksjdhfhfhfhffhfhfhhfh");
		System.out.println("append 후 : "+strbuffer);
		System.out.println("해쉬코드 : " + strbuffer.hashCode());
		System.out.println("많은 문자를 추가한 후 가용크기 : " + strbuffer.capacity());
	}
}
  • 결과
strBuffer의 해쉬코드 : 366712642
append 후 : abcdef
strBuffer의 해쉬코드 : 366712642
insert 후 : abcaaadef
strBuffer의 해쉬코드 : 366712642
delete 후 : abcdef
strBuffer의 해쉬코드 : 366712642
버퍼의 가용크기 :19
append 후 : abcdefabcefjhksjdhfhfhfhffhfhfhhfh
해쉬코드 : 366712642
많은 문자를 추가한 후 가용크기 : 40

StringTokenizer

  • StringTokenizer란 어떤 것을 기준으로 문자열을 분할하는 것이다
  • Oracle의 StringTokenizer 설명 사이트
public class Ex11_StringTokenizer {
	public static void main(String[] args) {
		String str1 = "박보검 설현 수지 고소영 장동건";
		String str2 = "100-90-85-76";
		StringTokenizer tokenizer1 = new StringTokenizer(str1);  //구분자는 space
		StringTokenizer tokenizer2 = new StringTokenizer(str2, "-");  //구분자는 -
		System.out.println("tokenizer1의 토큰 갯수 : " + tokenizer1.countTokens());
		System.out.println("tokenizer2의 토큰 갯수 : " + tokenizer2.countTokens());
		while(tokenizer1.hasMoreTokens()) {
			System.out.println(tokenizer1.nextToken());
		}
		while(tokenizer2.hasMoreTokens()) {
			System.out.println(tokenizer2.nextToken());
		}
	}
}
  • 결과
tokenizer1의 토큰 갯수 : 5
tokenizer2의 토큰 갯수 : 4
박보검
설현
수지
고소영
장동건
100
90
85
76
profile
씨앗 개발자

0개의 댓글