justgo_developer

String vs StringBuffer vs StringBuilder 차이 본문

IT/자바

String vs StringBuffer vs StringBuilder 차이

다날92 2021. 1. 23. 21:46
728x90
반응형

자바 언어로 개발시 평상시에 많이 쓰는 String, StringBuffer, StringBuilder의 차이점은 무엇일까?

 

■ String :

불변, 선언하면 동일한 공간이 할당되어 있기 때문에값을 바꾸어도 메모리를 차지하고 있음.

값을 바꾸어도 새로운 String 객체가 생성되는 것.

값이 자주 안바뀔때 사용하면 좋음

 

 

- String 객체 값이 변경 시 새로운 메모리 주소값이 생성됨

※  hashCode는 메모리의 주소 값을 해시한 것 

 

■ StringBuffer, StringBuilder : 

가변, 객체를 생성하지 않아도 문자열 수정 가능

동일한 객체 내에서 수정됨.

값이 자주 바뀌는 경우 String 보다 효율적

 

 

- StringBuffer, StringBuilder 값이 변경되어도 메모리 주소값은 동일

 

 

Why??

실제 intellj를 이용해 String 구현된 Class를 확인해보니 private final char value[]로 선언되어 있음.

※ Private final 의미 : 선언한 변수를 사용하면 재할당하지 못해, 새로운 값이 할당된다.

 

 

그렇다면 StringBuilder와 StringBuffer의 차이점은 무엇일까?

- StringBuilder : Thread-Safe 하지 않음, 단일쓰레드, 동기화 고려X
- StringBuffer : Thread-Safe 함, 멀티쓰레드, 동기화 고려 O

728x90
반응형

'IT > 자바' 카테고리의 다른 글

SOLID 원칙  (0) 2021.02.06
피터 코드의 상속 규칙  (0) 2021.02.06
OOP(객체지향프로그램) 4가지 원리  (1) 2021.02.06
자바 정규식(Regular Expressions)  (0) 2021.01.30
public static void main(String[] args) 의미  (0) 2021.01.09