그것은 모두 하드웨어에서 나옵니다.
바이트는 대부분의 하드웨어에서 주소를 지정할 수있는 가장 작은 메모리 단위입니다.
방금 언급 한 모든 유형은 몇 바이트의 바이트로 작성됩니다.
바이트는 8 비트입니다. 그것으로 당신은 8 개의 부울을 표현할 수 있지만 한 번에 하나씩 만 볼 수는 없습니다. 당신은 1을, 당신은 8을 모두 다루고 있습니다.
그리고 그것은 그렇게 간단했지만 우리는 8 비트 버스에서 16, 32, 그리고 이제 64 비트 버스로 갔다.
즉, 바이트 수준에서 여전히 주소를 지정할 수 있지만 인접한 바이트를 가져 오지 않고는 더 이상 메모리에서 단일 바이트를 검색 할 수 없습니다.
이 하드웨어에 직면 한 언어 설계자들은 하드웨어에 맞는 유형을 선택할 수있는 유형을 선택할 수 있도록 선택했습니다.
이러한 세부 사항은 특히 모든 하드웨어에서 실행되는 언어로 추상화 할 수 있으며 추상화해야한다고 주장 할 수 있습니다. 이것은 숨겨진 성능 문제가 있지만 당신이 옳을 수도 있습니다. 그런 식으로 일어나지 않았습니다.
자바는 실제로 이것을 시도합니다. 바이트는 자동으로 Int로 승격됩니다. 처음으로 심각한 비트 이동 작업을 시도 할 때 견딜 수있는 사실.
그렇다면 왜 잘 작동하지 않습니까?
알려진 좋은 C 알고리즘으로 앉아서 Java로 입력하고 약간 조정하면 작동 할 수있는 방식으로 Java의 큰 판매 포인트. 그리고 C는 하드웨어와 매우 가깝습니다.
통합 유형에서 그 크기를 유지하고 추상화하는 것은 효과가 없었습니다.
그래서 그들은 가질 수있었습니다. 그들은 단지하지 않았다.
아마도 프로그래머는 누군가가 특정 크기보다 더 큰 수를 사용하기를 원하지 않을 것이므로 제한 할 수 있습니다.
이것은 유효한 생각입니다. 이를 수행하는 방법이 있습니다. 하나 의 클램프 기능 . 언어는 임의의 범위를 그들의 유형으로 구울 수 있습니다. 그리고 컴파일 타임에 해당 경계가 알려진 경우 해당 숫자가 저장되는 방식을 최적화 할 수 있습니다.
자바는 그 언어가 아닙니다.