Language/JAVA

[JAVA이론] StringBuffer / StringBuilder

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

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

 

 

📍 비교

StringBuffer StringBuilder
문자열 수정, 추가 가능 문자열 수정, 추가 가능
내부에서 동기화(synchronized) 지원 동기화 없음
스레드 안전(Thread Safe) 스레드 안전하지 않음
속도 보통 속도 빠름
멀티 스레드 단일 스레드

 

 

 

 

✋ 스레드?

더보기
더보기

스레드(Thread)는 프로세스(Process) 안에서 실행되는 작업의 가장 작은 단위

하나의 프로그램(프로세스) 안에서 동시에 여러 일을 처리하기 위한 실행 흐름

 

📌 비유

  • 프로세스 = 회사 (건물, 자원, 인력 모두 포함)
  • 스레드 = 직원 (실제로 일하는 사람)
  • 한 회사(프로세스) 안에 여러 직원(스레드)이 동시에 다른 일을 할 수 있음

 

 

 

 

 

 

 

✅ 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!