본문 바로가기
Knowledge/CS

String, StringBuffer, StringBuilder

by YoonJong 2022. 8. 17.
728x90

연산횟수가 많아지거나 멀티쓰레드, Race condition 등 상황이 자주 발생하면, 

각 클래스의 특징을 이해하고 상황에 맞게 사용해야한다.

 

String 과 StringBuffer , StringBuilder 의 차이점은 불변의 속성을 갖는 것이다

String str = "hello";
str = str + " world";

 

String 은 불변이기 때문에, "hello world"는 새로운 메모리 영역을 가리키게 되고,

str 에 남아있는 "hello" 는 GC 에 의해 사라진다.

따라서, 자주 변하는 문자열을 사용할 때는 String 을 사용하는 것은 메모리를 많이 사용하기 때문에 지양하는 것이 좋다.

https://ifuwanna.tistory.com/221

 

이러한 문제를 해결하려면, StringBuffer / StringBuilder 를 사용해야 한다.

동일한 객체내에서 생성,수정,삭제가 가능하다.

StringBuffer sb = new StringBuffer("hello");
sb.append(" world");

https://ifuwanna.tistory.com/221

 

StringBuffer 와 StringBuilder 의 차이점은 무엇일까?

동기화의 유무에 있다.

 

StringBuffer은 동기화를 지원해서 멀티스레드 환경에서 안전하다 ( thread - safe )

String 또한,불변성을 가지기 때문에 안전하다.

 

StringBuilder는 동기화를 지원하지 않는다.

멀티스레드 환경에서는 적합하지않지만, 싱글스레드 환경에서는  StringBuffer보다 성능이 뛰어나다.

 

 

 

 

참고

https://ifuwanna.tistory.com/221

 

[Java] String, StringBuffer, StringBuilder 차이 및 장단점

Java 에서 문자열을 다루를 대표적인 클래스로 String , StringBuffer, StringBuilder 가 있습니다. 연산이 많지 않을때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없습니다

ifuwanna.tistory.com

https://velog.io/@heoseungyeon/StringBuilder%EC%99%80-StringBuffer%EB%8A%94-%EB%AC%B4%EC%8A%A8-%EC%B0%A8%EC%9D%B4%EA%B0%80-%EC%9E%88%EB%8A%94%EA%B0%80

 

StringBuilder와 StringBuffer는 무슨 차이가 있는가?

Java에서 String 클래스는 불변성을 갖습니다. 그래서 변하지 않는 문자열을 자주 사용하는 경우엔 좋은 성능을 기대할 수 있습니다. 하지만 문자열에 대한 변경이 자주 일어나는 프로그램에서 Stri

velog.io

 

728x90

댓글