연산횟수가 많아지거나 멀티쓰레드, 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
[Java] String, StringBuffer, StringBuilder 차이 및 장단점
Java 에서 문자열을 다루를 대표적인 클래스로 String , StringBuffer, StringBuilder 가 있습니다. 연산이 많지 않을때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없습니다
ifuwanna.tistory.com
StringBuilder와 StringBuffer는 무슨 차이가 있는가?
Java에서 String 클래스는 불변성을 갖습니다. 그래서 변하지 않는 문자열을 자주 사용하는 경우엔 좋은 성능을 기대할 수 있습니다. 하지만 문자열에 대한 변경이 자주 일어나는 프로그램에서 Stri
velog.io
'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 |
댓글