Data : 값
Type : 종류 (실수, 정수)
이러한 Data와 Type에 따라 저장될 공간의 크기와 저장형식이 달라질 것인데, 이를 위해서 DataType(자료형)이 필요하다.
예를 들어, boolean이라는 논리형 Primitive data type은 true, false만 나타내면 되기 때문에 1byte의 메모리 공간만 할당하면 된다.
질문 !
true, false면 1 bit만으로 표현할 수 있는 것이 아닌가요?일반적으로 1 Byte가 메모리를 읽는 기본 단위이기 때문이다.
그렇다면 왜 1 Byte를 기본 단위로 지정했을까?
이를 알기 위해서는 컴퓨터의 내부 구조에 대해 알아야할 필요가 있을 것 같다.
이는 이전 포스트를 참조 ->
그래서 Data Type에는 두가지 종류가 있다.
기본형은 '데이터 값 자체'를 저장한다.
종류 : 논리형 (boolean), 문자형 (char), 정수형(byte,short,int,long), 실수형 (float,double)
정수형 data type을 사용할 때, 일반적으로 int를 사용하는 것이 CPU가장 효율적으로 처리할 수 있다.
이유가 무엇일까?
(구글 서치와 약간의 뇌피셜) 32비트 운영체제의 Register를 사용할 경우에 int 타입이 그 크기에 맞게 딱 알맞게 들어가기 때문이다. 물론 64비트 운영체제의 겨웅에는 32비트가 남기는 한다. 하지만 내부적으로도 int형 타입에 최적화 되어있다고 한다.
메모리의 효율성을 따져야 한다면, 크기를 덜 잡아먹는 short를 사용하는 것이 좋겠다.
참조형은 '데이터 주소 값'을 저장한다. 그렇기에 null이 들어갈 수 있는 것이다.
또한 64 bit 운영체제라면 8byte가, 32 bit 라면 4byte의 주소값을 확인할 수 있다.01
기본형을 제외한 모든 종류이다. (클래스)
상수는 변수긴 하지만, 한번 저장하면 값을 바꿀 수 없다. 그래야 'Constant'하다.
그렇게 만들기 위해서는
final int CONSTANT = 10;
final 키워드와 함께 붙여야 절대 수정 불가능한 상수가 된다.
값 자체를 의미한다.
정리하자면,
변수 : 하나의 값을 저장할 수 있는 메모리 공간
상수 : 값을 한번만 저장할 수 있는 메모리 공간
리터럴 : 그 자체의 값을 의미함