String str1 = "안녕!";
for(int x = 0 ; x < 10 ; x++) {
str1 += "야옹";
}
System.out.println(str1);
// 안녕, 안녕야옹, 안녕야옹야옹... -> 전부 다른 메모리
// 메모리의 생성, 소멸, 복사가 빈번하게 일어남... 백만으로가면 꽤빡세다구
// StringBuffer와 StringBuilder : 문자열 조작에 유용한 메서드
// 문자열을 가변하게 조작할 수 있도록 도와주는 클래스임
// append()를 사용하면 문자열을 계속 더하거나 수정할 수 있다!
// ** append()
// StringBuffer나 StringBuilder 객체에 문자열을 추가하는 메서드
// --> 기존 문자열에 새로운 문자열을 덧붙일 수 있음
1. StringBuffer
StringBuffer sb1 = new StringBuffer(1000); // char이 1000개인 메모리를 생성
sb1.append("하이~");
for(int x = 0 ; x < 10 ; x++) {
sb1.append("멍");
}
// System.out.println(sb1); --> 출력만 할거면 이래도 되긴되는데...
String str2 = sb1.toString(); // 어딘가에 또 써야하니까 String으로 변환 필요!
System.out.println(str2); // 출력 : 하이~멍멍멍멍멍멍멍멍멍멍
2. StringBuilder
StringBuilder sb2 = new StringBuilder();
// 문자열 추가
sb2.append("Hello, ");
sb2.append("World!");
// 문자열 삽입
sb2.insert(6, "Java ");
// 문자열 삭제
sb2.delete(12, 17);
// 문자열 대체
sb2.replace(6, 10, "Java");
// 문자열 출력
System.out.println(sb2.toString()); // "Hello, Java World!"
// ** 둘의 차이 : 동기화 여부
// 1)
// StringBuffer는 동기화되어 있어 다중 스레드 환경에서 안전하게 사용할 수 있습니다.
// --> 여러 스레드가 동시에 StringBuffer를 조작할 때, 스레드 간 충돌을 방지합니다.
// 2)
// StringBuilder는 동기화되어 있지 않으므로 단일 스레드 환경에서만 안전하게 사용해야 합니다.
// --> 다중 스레드 환경에서 사용할 때 동기화 문제가 발생할 수 있습니다.
'JAVA > DAY 17 _ 23.09.08' 카테고리의 다른 글
API _ 문자열분리 (0) | 2023.09.19 |
---|---|
API _ math. (0) | 2023.09.19 |
중요API _ 날짜 ↔ 문자 ↔ 숫자 (0) | 2023.09.19 |
API _ DateClass (0) | 2023.09.19 |
API _ SystemClass (0) | 2023.09.19 |