Java에서는 String Class의 불변성(Immutable)으로 인한 StringBuilder, StringBuffer Class를 제공하고 있습니다. String, StringBuilder, StringBuffer Class의 차이점이 궁금하신 분들은 아래 포스팅을 참고해주세요.
StringBuilder, StringBuffer에 할당된 값들을 초기화 하기 위해 아래와 같이 세가지 방법이 가장 많이 사용됩니다.
StringBuilder sb = new StringBuilder();
sb = new StringBuilder(); // 1. 새로운 인스턴스 생성
sb.delete(0, sb.length()); // 2. delete() 이용
sb.setLength(0); // 3. setLength() 이용
위 세가지 방법중 어떠한 방법이 가장 좋다라고 스택오버플로우에서도 논쟁이 분분하고 많은 분들이 성능 비교 실험을 해봤지만 결과적으로는 성능상 큰 차이는 보이지 않습니다. 약간의 차이만 있을 뿐인데 새로 인스턴스를 생성하는 1번 방법의 경우 기존 인스턴스가 GC의 대상이 되기 때문에 제외하고 2번 delete() 메서드가 setLength() 보다 조금 더 빠른 성능을 보여주는 벤치마크가 있으나 저는 가독성면에서 직관적인 3번을 조금더 선호하고 있습니다.
이미 기재한 것 처럼 성능테스트를 보면 퍼포먼스 차이가 거의 나지 않기 때문에 사실 요즘과 같이 프로그램 메모리가 넉넉한 상황에서는 일하시는 각사의 코드컨벤션에 맞추는게 가장 좋은 방법이 아닐까 싶습니다🙂
'Program > Java' 카테고리의 다른 글
[Java] List를 배열(Array)로 변환 하기 - Java버전별, 기본형 변환 (0) | 2022.01.21 |
---|---|
[Java] 2차원 배열 정렬 (오름차순, 내림차순, 다중 조건) (0) | 2022.01.14 |
[Java] Array, ArrayList 차이점 (0) | 2021.08.30 |
[Java] 배열 정렬,복제,채우기 - java.util.Arrays (0) | 2021.08.30 |
[Java] void Method 종료 하기 (0) | 2021.03.08 |