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의 성능이 그렇게 탁월하지 않다. 스마트 하지도 않기에 프로그래머의 역량이 중요하다.
생각해보면 모두 객체이기에 문자열 처리가 성능 개선에 가장 중요한 관건인듯 하다.
|
반응형
'프로그래밍 > Java' 카테고리의 다른 글
File open시 유용한 Path 가져오기 (0) | 2015.10.21 |
---|---|
Java8 활용기 - addActionListner (0) | 2015.10.16 |
FileRename - 파일 이름과 확장자를 변경 해보자. (0) | 2015.09.21 |
Singleton Pattern for Java (0) | 2015.09.21 |
생성자 인자가 많을때 어떤 패턴을 써야 하나? (0) | 2015.09.21 |