Database/ORACLE

[ORACLE 이론] StringBuffer / StringBuilder

오류나면꽥꽥 2024. 2. 19. 13:34

String, StringBuffer, StringBuilder 모두 문자열을 저장하고, 관리하는 클래스

 

 


 

 

✅ StringBuffer / StringBuilder

 

String 클래스의 인스턴스는 한 번 생성되면 그 값을 읽기만 할 수 있고, 변경 불가능
StringBuffer 클래스의 인스턴스는 값을 수정하거나, 추가 가능

 

StringBuffer StringBuilder
스레드에 안전한 프로그램이 필요할 때 사용  스레드에 안전한지 여부가 전혀 
관계 없는 프로그램을 개발할 때 사용

 

단순히 성능만 놓고 본다면 연산이 많은 경우, StringBuilder > StringBuffer >>> String 입니다.

 

 

 

 

 

 

✋ String vs StringBuffer 차이 

 

String 인스턴스의 문자열은 덧셈(+) 연산자로 결합 ▶ 합쳐진 문자열은 새로운 String 인스턴스를 생성
❗ 문자열을 결합할수록 공간이 낭비될 뿐만 아니라 실행 속도도 매우 느려짐

 

StringBuffer 인스턴스를 사용하면 문자열을 바로 추가 가능

공간의 낭비도 없으며 속도도 매우 빠름

 

 

 

 

 

 

📌 StringBuffer의 메소드

 

  append()   전달받은 값을 문자열로 반환하여 해당 문자열의 마지막에 추가
  capacity()   StringBuffer 인스턴스의 현재 버퍼 크기를 반환
  delete()   지정한 인덱스의 해당하는 부분 문자열을 제거
  deleteCharAt()   해당 인덱스의 문자 한 개만 제거
  insert()   지정한 인덱스 위치에 입력 값을 문자열로 변환한 후 해당 인덱스 위치에 문자열을 추가

 

 

ex)

append()

StringBuffer str = new StringBuffer("Hello");

System.out.println(str.append(" Java!")); // Hello Java!

 

 

capacity()

StringBuffer str1 = new StringBuffer();
StringBuffer str2 = new StringBuffer("Hello");
StringBuffer str3 = new StringBuffer(" Java!");

// StringBuffer 인스턴스 생성 시, 16글자의 여유 공간을 가지고 생성된다.
System.out.println(str1.capacity()); // 16

 

 

delete()

StringBuffer str = new StringBuffer("Hello World!");

System.out.println(str.delete(5, 11)); // Hello!

 

 

deleteCharAt()

StringBuffer str = new StringBuffer("Hello World!");

System.out.println(str.deleteCharAt(1)); // Hllo!

 

 

insert()

StringBuffer str = new StringBuffer("Hello");

// System.out.println(str.append(" World!"));
System.out.println(str.insert(5, " World!")); // Hello World!
System.out.println(str.insert(5, " Java")); // Hello Java World!