본문 바로가기
JAVA

221018 StringBuilder

StringBuilder
String의 단점
->String 객체는 처음 초기화된 데이터에 변화가 생기면 기존 객체를 재활용하지 않고 새로운 객체를 생성함
즉, 원본 문자는 그대로.


StringBuilder는 원본문자를 가지고 바꿈. 훨씬 빠르다.

예시
append() : 문자열의 마지막에 문자열을 붙여줌
inser() : 중간에 문자열 추가
delete() : 문자열 삭제
deleteCharAt() : 특정인덱스의 문자 하나 삭제
replace() : 문자열 바꾸기
setCharAt() : 문자열에서 주어진 인덱스의 문자를 다른 문자로 대체
toString() : StringBuilder 객체의 값을 문자열로 반환
reverse() : 문자열을 뒤집음

우리가 아는 개념에서 StringBuilder와 StringBuffer는 차이가 없지만
일단 Buffer 사용해라.

 

package api.lang.sb;

public class StrBufferEx {
	public static void main(String[] args) {
		
		String str = new String("Java");
		StringBuffer sb = new StringBuffer("Java");
		
		System.out.println(str);
		System.out.println(sb);
		
		
		str=str+"Program"; // 문자열
		sb.append("Program"); // 버퍼클래스
		System.out.println(str);
		System.out.println(sb);
		
		//문자열 마지막에 추가
		sb.append("기존 문자열 마지막에 추가");
		System.out.println(sb);
		
		//중간에 추가
		sb.insert(11, "-");
		System.out.println(sb);
		
		//문자열 변경
		sb.replace(0,4, "자바");
		System.out.println(sb);
		
		//문자열 삭제
		sb.delete(0, 2);
		System.out.println(sb);
		
		//문자열로 형변환
		//System.out.println(str.equals(sb));
		String result = sb.toString();
		
		//거꾸로
		sb.reverse();
		System.out.println(sb);
		
		
		
	}
	

}
Java
Java
JavaProgram
JavaProgram
JavaProgram기존 문자열 마지막에 추가
JavaProgram-기존 문자열 마지막에 추가
자바Program-기존 문자열 마지막에 추가
Program-기존 문자열 마지막에 추가
가추 에막지마 열자문 존기-margorP

StringBuffer는 유용한 메서드들을 많이 가지고 있다. 

 

 

 

시간초차이

package api.lang.sb;

public class StringTest {
	public static void main(String[] args) {
		
		long start = System.currentTimeMillis();
		
//		String str = "";
//		for(int i=1;i<300000;i++) {
//			str+="A";
//		}//13.673초
		
		StringBuffer sb = new StringBuffer("");
		for(int i=1;i<300000;i++) {
			sb.append("A");
		} //0.014초
		
		
		
		long end = System.currentTimeMillis();
		
		System.out.println((end-start)*0.001);
		
		
	}

}

String은 매번 새로 만들고, StringBuffer는 기존의 것을 바꾸기 때문에 StringBuffer가 훨씬 빠르다.

'JAVA' 카테고리의 다른 글

221018 Wrapper클래스-Boxing, UnBoxing, AutoBoxing  (0) 2022.10.18
221018 Math  (0) 2022.10.18
221018 API String 실습  (0) 2022.10.18
221018 API System, String  (0) 2022.10.18
221018 API, Object  (0) 2022.10.18