String 의 불변성의 문제를 해결할 수 있는 클래스
Buffer
public class Main {
public static void main(String[] args) {
// 실험 1
StringBuffer sb = new StringBuffer();
sb.append("hello");
sb.append(" ");
sb.append("world");
String str = sb.toString();
System.out.println(str); // 실행결과 : hello world
// 실험 2 : 메소드 체이닝
StringBuffer sb2 = new StringBuffer();
StringBuffer sb3 = sb2.append("hello"); // sb2에 "hello"를 추가한 값을 sb3으로.
if (sb2 == sb3) {
System.out.println("sb2 == sb3"); // 실행 결과 : sb2 == sb3
}
// 실험 3
String str2 = new StringBuffer().append("hello").append(" ").append("world").toString();
System.out.println(str2); // 실행 결과 : hello world
}
public class StringBuffer_Ex {
public static void main(String[] args) {
String s = "abcdefg";
StringBuffer sb = new StringBuffer(s); // String -> StringBuffer
System.out.println("처음 상태 : " + sb); // 처음상태 : abcdefg
System.out.println("문자열 String 변환 : " + sb.toString()); // String 변환하기
System.out.println("문자열 추출 : " + sb.substring(2,4)); // 문자열 추출하기
System.out.println("문자열 추가 : " + sb.insert(2,"추가")); // 문자열 추가하기
System.out.println("문자열 삭제 : " + sb.delete(2,4)); // 문자열 삭제하기
System.out.println("문자열 연결 : " + sb.append("hijk")); // 문자열 붙이기
System.out.println("문자열의 길이 : " + sb.length()); // 문자열의 길이구하기
System.out.println("용량의 크기 : " + sb.capacity()); // 용량의 크기 구하기
System.out.println("문자열 역순 변경 : " + sb.reverse()); // 문자열 뒤집기
System.out.println("마지막 상태 : " + sb); // 마지막상태 : kjihgfedcba
}
}
public StringBuffer(int length) {
value = new char[length]; // 버퍼의 크기를 지정할 경우
}
public StringBuffer() {
this(16) // 버퍼의 크기를 지정하지 않았을 경우
}
public StringBuffer(String str) {
this(str.length() + 16); // 지정된 문자열 길이보다 버퍼의 크기 더 크게 지정할 경우
append(str);
}
char newValue[] = new char[newCapacity]; // 새로운 배열 newValue 을 생성
System.arraycopy(value, 0, newValue, 0, count); // 기존 배열 value의 내용을 새로운 배열 newValue로 복사 (count : 문자열의 길이)
value = newValue; // 새로운 배열 newValue의 주소를 참조변수 value에 저장
stringbuffer sb = new stringbuffer("abc");
stringbuffer sb = new stringbuffer("abc");
sb.append("123");
stringbuffer sb2 = sb.append("ZZ"); // sb 내용 뒤에 + "ZZ"를 추가
System.out.println(sb);
System.out.println(sb2);
/* 출력 결과
abc123ZZ
abc123ZZ
*/
stringbuffer sb = new stringbuffer("abc");
sb.append("123").append("ZZ"); // sb.append("123") 은 sb라고 볼 수 있다
class Ex {
public static void main(String args[]) {
StringBuffer sb = new StringBuffer("abc"); // StringBuffer 인스턴스 생성
StringBuffer sb2 = new StringBuffer("abc");
String s = sb.toString(); // 1. StringBuffer 인스턴스 호출 후, stringbuffer -> string 으로 형변환
String s2 = sb2.toString();
System.out.println(s.equals(sb2)); // 2. equals() 메서드로 두 문자열을 비교
}
}