2010-01-20 10 views
8

Integer 형의 정수형의 객체가 있어도, 정수형 (int)의 원시 형은 왜 존재합니까? 그러나 문자열 유형과 동일하지 않습니다. String에는 원시적 인 형태는 없습니다. Always String은 객체 참조를 처리합니까?정수형의 정수형

답변

18

속도. 기계어 코드가 두 개의 Integer 객체를 가져 와서 int 값을 추출한 다음 추가하여 새로운 결과 Integer 객체를 만들어 결과를 포함하는 대신 네이티브 CPU 명령어를 사용하여 두 int를 더하는 것이 훨씬 빠릅니다. (how JNI maps primitives)

문자열은 복잡하고 많은 방법이 있으므로 컴퓨터 코드 대위법이 없습니다. 그들은 진실한 목표로 승진된다. 또, String는 같은 값으로 작성된 다른 String와 상태를 공유합니다. 원시 가치 공유는 이와 같은 다른 원시적 가치와 함께 진술하지 않습니다. (immutable can be shared | primitive no sharing)

+1

공간도 추가합니다. 정수를 메모리에 저장하는 공간이 적어 전체 개체가 모든 작업을 수행 할 수 있습니다. – Alex

0

문자열 데이터 유형은 int보다 훨씬 복잡합니다. 한 가지 문자열을 유지하기 위해 다양한 양의 메모리가 있습니다.

1

프로세서 (CPU)가 정수 유형을 직접 지원하지만 문자열은 지원하지 않기 때문입니다. 그리고 성능상의 이유로 Java는 JVM이 실행될 수있는 프로세서가 지원할 수있는 일부 기본 유형을 지원합니다.

0

궁극적으로 계산은 기계 수준 언어로 수행됩니다. 성능 측면에서 무엇이 프리미티브와 객체간에 차이가 나는지 궁금합니다. 정교한 대답을 부탁드립니다.

+0

이것은 코멘트 여야합니다. '대답'이 아닙니다. 여기 SO 투어에 경쟁하십시오. http://stackoverflow.com/tour –

관련 문제