StringBufferJava2022. 12. 10. 12:34
Table of Contents
728x90
728x90
StringBuffer
문자열을 추가하거나 변경할 때 주로 사용하는 자료형
- String 자료형이나 인스턴스의 경우 생성되면 변경이 불가능 → 문자열을 추가, 변경하는 과정 필요
- 버퍼(buffer)라는 독립적 공간을 통해 값을 변경, 추가
- 버퍼는 기본적으로 16개의 문자를 저장할 수 있지만 생성자를 통해 크기를 설정 가능
버퍼(Buffer) : 임시저장공간
데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역
※버퍼링을 큐(Queue)라고도 표현한다
append
문자열 추가
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("오늘의");
stringBuffer.append(" 점심은 ");
stringBuffer.append("몰?루");
String result = stringBuffer.toString();
System.out.println(result);
String result2 ="";
result2 += "오늘의";
result2 += " 점심은 ";
result2 += "몰?루";
System.out.println(result2);
// 두 결과는 동일하지만 내부적으로 객체가 생성되고 메모리가 사용되는 과정이 다름
// StringBuffer객체는 한 번만 생성되지만
// String은 +연산이 있을 때마다 생성되고 있다
// StringBuffer가 String대비 메모리 사용량도 많고 속도도 느리다
// 종합 해 보았을 때 문자열 추가 및 변경 작업이 많을 경우 StringBuffer가 유리하지만
// 문자열 변경작업이 거의 없는 경우는 String을 사용하는 것이 유리하다
// StringBuilder
// StringBuffer와 비슷한 자료형이다
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("오늘의");
stringBuilder.append(" 저녁도 ");
stringBuilder.append("몰?루");
String result3 = stringBuilder.toString();
System.out.println(result3);
// StringBuffer : 멀티 스레드 환경에서 안전하다 → 동기화를 필요로 할 때
// StringBuilder : 버퍼보다 성능이 우수하다 → 필요 없을 때
insert
지정 위치에 문자 삽입
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("오늘의 몰?루");
stringBuffer.insert(3, " 점심은 ");
System.out.println(stringBuffer.toString());
stringBuffer.insert(11, "라?");
System.out.println(stringBuffer.toString());
// Console
// 오늘의 점심은 몰?루
// 오늘의 점심은 몰?라?루
substring
String 자료형의 substring 메서드와 동일하게 문자열을 자름
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("오늘의 점심은 몰?루");
System.out.println(stringBuffer.substring(4));
System.out.println(stringBuffer.substring(4, 9));
// Console
// 점심은 몰?루
// 점심은 몰
그 외 메서드들
StringBuffer stringBuffer = new StringBuffer("오늘의 점심은 몰?루");
System.out.println(stringBuffer);
// replace : 문자열 치환(교체)
System.out.println(stringBuffer.replace(4, 7, "바보야")); // 오늘의 바보야 몰?루
// delete : 문자열 삭제
System.out.println(stringBuffer.delete(2, 7)); // 오늘 몰?루
// deleteCharAt
System.out.println(stringBuffer.deleteCharAt(2)); // 오늘 점심은 몰?루
// toString : String으로 변환
// reverse : 문자 전체를 뒤집는다
System.out.println(stringBuffer.reverse()); // 루?몰 은심점 의늘오
// setCharAt
stringBuffer.setCharAt(2, '도'); // 오늘도 점심은 몰?루
System.out.println(stringBuffer);
// setLength : 문자열 길이 조정(현재보다 길면 공백으로 채워짐)
stringBuffer.setLength(7);
System.out.println(stringBuffer); // 오늘의 점심은
// trimToSize : 배열 뒷 부분의 빈 공간 제거
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!