public class D10_StringBuilder {
/*
# StringBuilder
- 문자열을 조립할 때 쓰는 기능들이 모여있는 클래스
- += 누적 연산을 사용해 문자열을 조립하는 것보다 속도가 훨씬 빠르다
- String은 내부가 배열로 되어있어서 한번 만들어지면 수정이 불가능한 객체이기 때문에
+= 연산을 할때마다 새로운 객체를 생성하여 속도가 느리다
*/
public static void main(String[] args) {
long start_time = System.currentTimeMillis();
String str = "";
// +=을 할때마다 새 String 인스턴스를 만들기 떄문에 엄청 느리다
for (int i = 0 ; i < 10; ++i) {
str += i + "\n";
}
System.out.println(str);
long end_time = System.currentTimeMillis();
long start_time2 = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; ++i) {
// append() : +=의 역할을 한다(빌더에 문자열을 추가한다)
sb.append(i + "\n");
}
// StringBuilder로 완성된 문자열을 toString()으로 뽑아낼 수 있다
System.out.println(sb);
long end_time2 = System.currentTimeMillis();
System.out.println("소요 시간1: " + (end_time - start_time) + "ms");
System.out.println("소요 시간2: " + (end_time2 - start_time2) + "ms");
// 기존에 있던 문자열을 스트링빌더로 만들어 활용할 수 있다
String text = "apple";
StringBuilder sb2 = new StringBuilder(text);
// append() : 뒤에 데이터 추가
sb2.append("/orange");
System.out.println(sb2);
// insert(offset, data) : 원하는 곳에 데이터 추가
sb2.insert(0, "pine");
System.out.println(sb2);
// delete(start, end) : 원하는 만큼 문자 삭제
sb2.delete(4, 9);
System.out.println(sb2);
// replace(start, end, str) : 원하는 문자열 교체
sb2.replace(0, 4, "grape");
System.out.println(sb2);
// substring(start, end) : 원하는 위치의 문자열을 자른 인스턴스를 반환
// substring(start) : 해당 위치부터 마지막까지...
String sub = sb2.substring(6, 10);
String sub2 = sb2.substring(6);
System.out.println(sub);
System.out.println(sub2);
System.out.println("원본은 substring 후에도 유지된다: " + sb2);
// reverse() : 뒤집는다
sb2.reverse();
System.out.println(sb2);
sb2.reverse();
// setCharAt(index, ch) : 한 글자를 수정할 수 있다
sb2.setCharAt(0, 'G');
System.out.println(sb2);
// indexOf(str) : 찾은 문자열의 위치를 반환한다 (못찾으면 -1 반환)
sb2.setCharAt(sb2.indexOf("o"), 'O');
System.out.println(sb2);
}
}
'JAVA' 카테고리의 다른 글
Date (0) | 2024.06.07 |
---|---|
정규표현식 (Regex) (0) | 2024.06.07 |
String (0) | 2024.06.04 |
HashMap (0) | 2024.06.02 |
Comparator (0) | 2024.05.31 |