String
한번 생성되면 String 객체가 변경이 안되고 concat이나 "+"로 문자열을 붙이면
새로운 메모리 주소로 다시 생성된다.
String == String비교시 문자열의 메모리상의 주소를 비교한다.
String.equals(String)은 문자열의 메모리상의 주소와 상관없이 내용을 비교한다.
StringBuffer, StringBuilder
append사용하여 문자열을 붙일 수 있다.(새로운 객체생성 안함)
StringBuffer는 멀티 쓰레드 상태에서 동기화를 지원
동기화를 지원하다보니 StringBuffer보다 StringBuilder가 성능 상으로는 더 빠르다.
-------------------------------------------------------------------------------------------
http://egloos.zum.com/deblan2/v/419830
이 분의 속도측정 결과를 보면
String의 append함수나 "+" 연산자 사용횟수에 따라 객체가 계속 생성되다보니
속도가 느려지는걸 볼 수 있다.
문자열 연결작업이 많다면 반드시 StringBuffer나 StringBuilder를 사용하도록 하자.
-----------------------------------------------------------------------------------------------
JDK 1.5 버전 이후에는 컴파일 단계에서 String 객체를 사용하더라도 StringBuilder로 컴파일 되도록 변경되었습니다. 그리하여 JDK 1.5 이후 버전에서는 String 클래스를 활용해도 StringBuilder와 성능상으로 차이가 없어졌습니다.
http://ooz.co.kr/298
'프로그래밍 > Java' 카테고리의 다른 글
[Java]BigDecimal 올림 반올림 버림 (0) | 2018.08.04 |
---|---|
[Java]Spring 한글설정 (0) | 2018.07.09 |
[Java] String.valueOf와 toString (0) | 2018.05.30 |
[Java] Calendar (0) | 2018.05.23 |
[Java]SimpleDateFormat (0) | 2018.05.20 |