프로그래밍/Java

Java String 클래스에 관한 이야기

seungdols 2015. 10. 14. 17:57


Java 언어에서 string을 어떻게 취급 하는가 ? 


1. 문자열 용량보다 실제 더 큰 용량을 차지한다. 


String class는 내부적으로 char[]형태로 저장한다.

- 객체 Header 4byte

- 문자열에 대한 참조 4byte

- 문자열 offset에 대해서 4byte

- 문자열의 길이 field 4byte

- Hash값 field 4byte

총 20byte는 무조건 차지.


2. Java의 char 타입은 2 byte


3. char[]의 경우 객체로 취급한다. 

Java언어에서 배열은 객체로 취급하기 때문이다.


흔하게 하는 실수가 있다. 



for (int i = 0; i <10 ; i++) {
String str = "01010220330-33303-99" + i;

}


위와 같이 특정 문자열 + 값들을 연결하는 행위이다. 


이러한 습관은 프로그래머로써 지양해야 하는 행동 중에 하나이며, 저러한 작업이 많다면 


StringBuilder를 이용하는 것이 좋다. 


직접 본 것은 아니지만, String을 연결 할 때는 JDK1.7 이후부터는 알아서 

StringBuilder를 생성해서 연결 해주도록 업데이트 되었다고는 하나 내가 명시적으로 습관화하는 노력이 필요로 하다!


왜냐하면, GC의 성능이 그렇게 탁월하지 않다. 스마트 하지도 않기에 프로그래머의 역량이 중요하다.


생각해보면 모두 객체이기에 문자열 처리가 성능 개선에 가장 중요한 관건인듯 하다.




  •  무단 수정 및 배포는 금지합니다. 
  •  모든 내용은 본 블로그 운영자가 정리한 내용입니다. 
  •  참조한 정보에 대해서는 출처를 남기고 있습니다.
  •  틀린 내용 / 오류가 포함된 내용은 댓글로 남겨주세요.
  •  choiseungho0822@gmail.com 보내주셔도 됩니다.
  •  Seungdols Wiki 운영중입니다.


반응형