JAVA/정리

[Java] String , StringBuffer , StringBulider 차이점

포포015 2021. 8. 25. 15:49

String - 불변의 속성을 가진다. 

* 문자열에 추가,수정,삭제 등의 연산이 빈번하게 발생할땐 사용하지말자

1
2
3
4
String abc = "abc";
abc += "def";
 
System.out.println(abc);
cs

(위와 같이 코드를 찍으면 값자체는 abcdef 가 나오겠지만 메모리적으로 본다면

제일처음에 abc라는 x100이라는 변수는 주소값을 가지고 있고, abc에 값을 추가해도

String 의 불변이라는 속성때문에 abcdef라는 x200번지의 주소를 새로 만들어서 값을 넣어서 사용자에게 출력하는것이다. 남아있던 x100은 나중에 GC(가비지컬렉터) 가 처리한다.)

 

StringBuffer - String과 차이점은 .append(), delete() 등의 메서드를 사용해 동일 객체내에서 문자열을 변경할수있다

* 문자열이 빈번하게 변경할때 사용하면된다

 

StringBuilder - 동기화를 지원하지않음( 멀티쓰레드 환경엔 안전하지않지만 StringBuffer보다 속도가 더 좋음)

 

StringBuffer랑 StringBuilder랑 큰차이는 동기화의 유무의 차이다.

StringBuffer는 멀티쓰레드 환경에서 안전하다는점 StringBuilder는 동기화를 지원하지않기때문에 

멀티쓰레드 환경에서 사용하는것은 적합하지않지만 단일쓰레드에선 StringBuffer보다 성능이 우세함.