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 |