본문으로 바로가기

Java에서는 String Class의 불변성(Immutable)으로 인한 StringBuilder, StringBuffer Class를 제공하고 있습니다. String, StringBuilder, StringBuffer Class의 차이점이 궁금하신 분들은 아래 포스팅을 참고해주세요.

 

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

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

ifuwanna.tistory.com

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번을 조금더 선호하고 있습니다.

 

이미 기재한 것 처럼 성능테스트를 보면 퍼포먼스 차이가 거의 나지 않기 때문에 사실 요즘과 같이 프로그램 메모리가 넉넉한 상황에서는 일하시는 각사의 코드컨벤션에 맞추는게 가장 좋은 방법이 아닐까 싶습니다🙂