728x90
연산횟수가 많아지거나 멀티쓰레드, Race condition 등 상황이 자주 발생하면,
각 클래스의 특징을 이해하고 상황에 맞게 사용해야한다.
String 과 StringBuffer , StringBuilder 의 차이점은 불변의 속성을 갖는 것이다
String str = "hello";
str = str + " world";
String 은 불변이기 때문에, "hello world"는 새로운 메모리 영역을 가리키게 되고,
str 에 남아있는 "hello" 는 GC 에 의해 사라진다.
따라서, 자주 변하는 문자열을 사용할 때는 String 을 사용하는 것은 메모리를 많이 사용하기 때문에 지양하는 것이 좋다.
이러한 문제를 해결하려면, StringBuffer / StringBuilder 를 사용해야 한다.
동일한 객체내에서 생성,수정,삭제가 가능하다.
StringBuffer sb = new StringBuffer("hello");
sb.append(" world");
StringBuffer 와 StringBuilder 의 차이점은 무엇일까?
동기화의 유무에 있다.
StringBuffer은 동기화를 지원해서 멀티스레드 환경에서 안전하다 ( thread - safe )
String 또한,불변성을 가지기 때문에 안전하다.
StringBuilder는 동기화를 지원하지 않는다.
멀티스레드 환경에서는 적합하지않지만, 싱글스레드 환경에서는 StringBuffer보다 성능이 뛰어나다.
참고
https://ifuwanna.tistory.com/221
728x90
'Knowledge > CS' 카테고리의 다른 글
[CS] JAR WAR 차이점 (0) | 2022.08.26 |
---|---|
여러 사이트 참고한 예상질문 정리 - 종합 (0) | 2022.08.17 |
컴파일과 인터프린터 (0) | 2022.08.17 |
해시(Hash)란 무엇인가? (0) | 2022.08.16 |
시간복잡도란 무엇인가? 다른방법은? (0) | 2022.08.13 |
댓글