프리미티브 타입 종류와 값의 범위 그리고 기본 값

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e1aedf44-4594-4479-ac3d-a9eb7b54960f/Screen_Shot_2021-07-14_at_6.18.36_PM.png

범위가 위와 같이 결정되는 이유(라이브): 바이트를 예로 들어, 바이트의 메모리 범위 = 1byte = 8bit, 즉, 표현 가능한 값의 개수는 개. 하지만 왜 범위가 0~256이 아닐까? 음수를 표현하기 위해 MSB(abb. for Most Significant Bit, 최상위 비트), 일반적으로 가장 왼쪽에 위치한 비트를 부호 비트로 사용하는데 1이면 음수, 0이면 양수를 나타낸다. 이렇게 되면 0을 포함한 -128~127까지 개의 값을 나타낼 수 있게 된다.

프리미티브 타입과 레퍼런스 타입

자바에서의 데이터 타입은 크게 기본형과 참조형으로 나뉜다. 기본형은 위에서 나와있는 논리형(boolean), 4개의 정수형(byte, short, int, long), 2개의 실수형(float, double)과 문자형(char)로 이루어져 있다. 이 여덟개의 데이터 타입을 제외한 모든 데이터 타입을 레퍼런스 타입, 참조형이라고 한다.

기본형 변수는 할당된 값 자체를 저장하지만 참조형은 객체의 주소를 저장한다.

그래서 참조형은 변수를 선언할 때 제일 먼저 데이터 타입과 변수의 이름을 지정해주는데 이 부분은 사실상 실제 객체가 아닌 해당 데이터 타입의 객체의 주소값을 담을 저장공간을 마련해주는 것이다. 그리고 뒤에 따라오는 new 키워드에 따라 객체가 만들어지고 해당 객체의 주소값이 앞에서 선언한 변수에 저장된다.

자바의 클래스, == 데이터타입,은 모두 Object 클래스를 상속받지만 기본형은 이에 해당되지 않는다.

리터럴

프리미티브 타입(기본형)은 자바 언어 자체에 내장되어 있기 때문에 new 키워드를 사용하지 않아도 된다(클래스로부터 생성된 객체가 아니라는 뜻이기도 하다).

기본형 변수를 선언할 때에는 int number = 1;과 같은 식으로 표현되는데 여기서 equal sign 뒤에 나오는 숫자 1을 literal이라 칭한다(원래 단어의 뜻만 본다면 constant가 더 적합하겠지만 자바에서 constant는 다른 의미를 뜻하기 때문에 -a variable whose value cannot change once it's been assigned, or any value with final keyword- literal이라고 칭하는 것 같다).

int number = 1; // literal: 1
char c = 'c'; // literal: c
string s = "sally"; // literal: sally

정수형을 나타낼 때에는 이진법, 십진법, 팔진법, 16진법을 이용해 표기할 수 있지만 실수형은 십진법만 받아드려진다. 또한 자바 7부터 정수형 리터럴 중간에 구분자('_')를 넣을 수 있게 되어서 큰 수를 보다 쉽게 읽을 수 있게 되었다.