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 |