프로그래밍/Java

String을 쓰면 안 되는 이유!

seungdols 2015. 1. 3. 10:38

자바 기반 프로그래밍을 할 때 가장 많이 사용하는 클래스 object class 제외하고 나면 String class, collection class를 가장 많이 사용한다.

요즘은 myBatis, ibatis, Hibernate등과 같은 데이터 매핑 프레임워크를 사용했으나 예전에는 그냥 직접 SQL을 쓰곤 했다.

여기서 많이들 String을 사용하게 되는데 이 부분에서 나중에 응답속도가 늦어진다.

왜 자바는 StringBuffer, StringBuilder를 써야 할까!!

JDK5.0에서부터 StringBuilder 클래스는 추가 되었다. 두 클래스가 제공하는 메소드는 동일하다. 그런데 뭐가 다를까?

바로 ThreadSafe를 지원하느냐 하지 않느냐의 차이로 좁힐 수 있다.

StringBuffer class는 ThreadSafe에 대한 설계가 되어있으나 StringBuilder는 단일 스레드에서의 안정성만 보장한다.

StringBuffer class, StringBuilder class는 String class 와 다르게 새로운 객체를 생성하지 않고, 기존에 있는 객체의 크기를 증가시키면서 값을 더한다.

그렇다면, String은 언제 쓰는게 좋을까?

String은 짧은 문자열을 더할 경우 사용한다.

StringBuffer는 스레드에 안전한 프로그래임 필요할 때나, 개발중인 시스템의 부분이 스레드에 안전한지 모를 경우 사용하면 좋다.
만약 클래스에 Static으로 선언한 문자열을 변경하거나, 싱글톤으로 선언된 클래스에 선언된 문자열일 경우에는 이 클래스를 사용해야만 한다.

StringBuilder는 스레드에 안전한지의 여부와는 전혀 관계없는 프로그램을 개발할 때 사용한다. 만약 메서드 내에 변수를 선언했다면, 해당 변수는 그 메서드 내에서만 살아 있으므로
StringBuilder를 사용하는게 좋다.

반응형

'프로그래밍 > Java' 카테고리의 다른 글

Static의 이중성!  (0) 2015.01.03
for loop를 빠르게 사용하는 방법은???  (0) 2015.01.03
NetBeans 설치  (0) 2014.11.11
Eclipse 사용간 파일을 지웠다!!가 복구 하기!!!  (0) 2014.11.11
절차 지향? 객체 지향?  (0) 2014.09.03