반응형

StringBuffer

    문자열 연결 시 실행되는 내부 로직

    문자열 생성 String 문자열을 연결할 때 아래와 같이 객체로써 선언해서 사용할 경우 불필요한 객체가 만들어진다는걸 우리는 알고있다. String temp = new String("wedul"); 그래서 String을 아래와 같이 선언해서 String constants Pool에 저장해서 불변객체를 생성해서 동일한 문자열에 대해서 새로 생성하지 않고 가져다 사용할 수 있도록 할수있다. (effective java. 불필요한 객체를 만들지 마라.) String temp = "wedul" 문자열 연결 문자열 생성 시 우리는 + 로 문자열을 연결할 경우 새로운 문자열 객체가 계속 생성되기 때문에 이를 해결하기 위해서 StringBuilder를 통해서 모든 append가 끝나고 build를 통해 문자열 객체를..

    규칙 51 - 문자열 연결 시 성능에 주의하라

    문자열 연결시에 + 를 사용하여 연결하면 편리하고 좋다. 한줄 정도나 몇 개 정도의 객체를 문자열로 변환할 때는 사용해도 무관하다. 하지만 연결하는 것이 많으면 성능에 문제가 발생한다. n개의 문자열에 연결 연산자를 반복 적용해서 연결하는 데 소요되는 시간은 n의 제곱에 비례한다. -> 왜냐하면, 문자열은 변경불가능한 객체이기 때문에 새로 만들기위해서 두 개의 문자열을 붙힐 때 기준에 문자열을 모두 복사한다. 만족스런 성능을 위해서는 stringBuilder나 동기화가 적용된 StringBuffer를 사용하라. 출처 : 조슈아 블로크, 『 Effective Java 2/E』, 이병준 옮김, 인사이트(2014.9.1), 규칙50 인용.

반응형