[JAVA] 자바 - StringBuilder, StringBuffer 클래스
by mini_min[JAVA]
자바 - StringBuilder
StringBuffer
✔️ StringBuilder, StringBuffer
- 두 클래스는 String 과 같이 문자열을 처리하는 클래스지만, 문자열 버퍼를 수정할 수 있는 것이 차이점이다.
- append() 메소드, insert() 메소드 이용해 데이터를 문자열로 변환하여 해당 문자열을 기존 객체의 문자열 버퍼에 추가 & 삽입한다!
즉, 가변적인 문자열을 처리하는 경우가 아니면, String 클래스를 사용한다.
❌ String 은 불변하지만, 스트링빌더와 스트링버퍼는 다름!
⭕ StringBuilder 나 StringBuffer 는 마지막에 String 으로 변환하여 사용
⭕ Stirng 으로 변환하면 성능이 매우 떨어지는 걸, StringBuilder로 처리하면 성능이 매우 우수 🥰
⭕ 하지만, 경우에 따라 스트링 빌더 + toString 하는게 더 시간 낭비 & 자원 낭비일 수 있다.
⭐ StringBuilder
: 동시성을 지원하지 않음. StringBuffer 보다 빠름
StringBuffer
:동시성 지원
StringBuilder sb1 = new StringBuilder("korea");
StringBuilder sb2 = new StringBuilder("korea");
System.out.println(sb1);
System.out.println(sb2);
System.out.println(sb1 == sb2); //false 주소비교
System.out.println(sb1.equals(sb2)); //false 주소비교
//StringBuilder 와 StringBuffer 의 equals() 는 주소를 비교
//StringBuilder 와 StringBuffer 문자열 비교는 String 으로 변환 후
💡스트링빌더 & 스트링버퍼 클래스의 equals() 메소드는 == 연산자와 동일하게 참조 영역을 비교한다.
서로 다른 객체로 생성되어 s1 과 s2는 주소값이 다르고, 만약 문자열을 비교하고 싶으면 string 으로 변환해서 equals() 를 하면 된다.
String s1 = sb1.toString();
String s2 = sb2.toString();
System.out.println(s1.equals(s2)); //true 문자열 비교
s1 = new String("korea");
s2 = new String("korea");
System.out.println("다른 객체와 문자열 비교 : " + s1.contentEquals(s2));//트루
System.out.println("다른 객체와 문자열 비교 : " + s1.contentEquals(sb1));//트루
//contentEquals = 스트링빌더와 스트링 넘나들며 문자 비교 가능
💡 contentEquals
= 해당 메소드는 스트링빌더와 스트링을 넘나들며 문자열을 비교할 수 있다!
✔️ append, insert
스트링빌더와 스트링버퍼에서 문자열을 추가하여 변환할 때 사용하는 메소드다!
추가하는 메소드는 위에 두 개와 같고, insert(삽입 위치, 삽입될 문자열) << 꼭 기억하기!
💡 삭제하는 메소드는 delete!!
delete(삭제 위치, 삭제할 크기/길이)
//spring 삭제
//delete(s, e) => s인덱스에서 e-1인덱스까지 삭제
sb3.delete(sb3.indexOf("spring"), sb3.indexOf("spring")+"spring".length());
System.out.println(sb3);
//java 끝까지 지우기
sb3.delete(sb3.indexOf("java"), sb3.length());
System.out.println(sb3);
System.out.println("문자열 길이 : " + sb3.length());
System.out.println("버퍼의 크기 : " + sb3.capacity());
//버퍼 크기를 문자열 크기로
sb3.trimToSize();
System.out.println("버퍼크기 : " + sb3.capacity());
//모든 문자열 지우기
sb3.delete(0, sb3.length());
System.out.println("문자열길이 : " + sb3.length());
✔️ append, delete, replace 응용
세 가지 메소드를 응용하면, 삭제-바꿈-삭제로 순차적으로 처리된다.
StringBuilder sb = new StringBuilder();
sb.append("123456789");
sb.delete(0, 3).replace(1, 3, "24").delete(4, 6);
//456789
//424789
//4247
System.out.println(sb);
//다 지우기
sb.delete(0, sb.length());
'Java' 카테고리의 다른 글
[JAVA] 자바 - Stirng 클래스 Quiz 풀이 모음(1) ⭐⭐ (0) | 2022.07.24 |
---|---|
[JAVA] 자바 - StringTokenizer 클래스 이해하기! (0) | 2022.07.24 |
[JAVA] 자바 - String 클래스 (1) (⭐⭐⭐중요) (0) | 2022.07.21 |
[JAVA] 자바 - Calendar 클래스 (달력 만들기, 나이 구하기) (0) | 2022.07.21 |
[JAVA] 자바 - Wrapper class 란? 개념 정리 (0) | 2022.07.20 |
블로그의 정보
개발자 미니민의 개발로그
mini_min