String vs StringBuffer vs StringBuilder

2023. 1. 26. 18:15프로그래밍 언어/JAVA

공통점과 차이점

 

(1) 공통점

- 문자열을 만들 때 사용한다. 

 

(2) 차이점

1. String

- 매번 객체를 생성하면서 문자열을 만들어야 한다. 

- 예를 들어, abc문자열에 zzz를 추가했을 때, 'abczzz'라는 객체가 하나 더 생성된다.

 

 

2. StringBuffer & StringBuilder

- 객체를 한번만 생성한다. 

- 수정과 삭제가 빈번할 때는 StringBuffer나 StringBuilder를 사용한다. 

 

3. StringBuffer와 StringBuilder의 차이

(1) StringBuffer는 쓰레드가 세이프하다.

- 즉, 쓰레드는 실제로 프로그램을 실행해주는 일꾼이다.

- 일꾼이 여러명일 경우, 같은 자원에 접근하는 경우가 생긴다.

- 한 일꾼은 값을 출력하고 다른 일꾼은 x를 1증가시키는 동작을 한다고 할 때, 두 일꾼이 접근하면 개발자의 의도와 다르게 출력이 될 수 있다.

- 이럴 때 문제가 생긴다.

- 이러한 경우를 막기 위해 자원에 sync라는 보호막을 씌워서 일꾼(쓰레드) 하나만 접근할 수 있게 한다. 

- 즉, StringBuffer는 자원에 보호막이 씌워져 있어서 일꾼이 하나씩만 접근할 수 있는 경우 쓰레드가 세이프하다고 한다.

 

 

(2) StringBuilder는 쓰레드가 세이프하지 않다. 

- 즉, StringBuilder를 사용하면 여러명의 일꾼들이 자원에 접근할 수 있다.

 

 

 

 

 

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

소켓 생성해서 보내고 받기  (0) 2023.01.27
쓰레드(Thread)  (0) 2023.01.27
Wrapper 클래스  (0) 2023.01.26
기본 API - 문자열 클래스  (0) 2023.01.26
FileOutputStream / PrintWriter  (0) 2023.01.26