boolean
: 1 byte
char
: 2 byte
byte
: 1 byte
short
: 2 byte
int
: 4 byte
long
: 8 byte
int
는 CPU가 가장 효율적으로 처리 가능
메모리를 절약하려면byte
orshort
를 사용하자
float
: 4 byte
double
: 8byte
boolean
은 true, false 두 가지만 표현하면 되므로 1 byte
char
은 자바에서 유니코드 (2 byte 문자체계)를 사용하므로 2 byte
byte
는 1 byte
int
(4 byte)를 기준으로short
는 짧아서 2 bytelong
은 길어서 8 byte
float
는 실수값을 부동소수점으로 저장
double
은 float보다 두배의 크기
상수는 변수와 마찬가지로 '값을 저장할 수 잇는 공간' 이지만 , 변수와 달리 한 번 값을 저장하면 다른 값으로 변경할 수 없다.
-> 그래서 키워드가 final
이다.
(JDK 1.6부터 상수를 선언과 동시에 초기화 하지않고 사용 시 초기화 하면 되도록 바뀌었지만 선언과 동시에 초기화하는 습관을 들이자!)
원래는 12, 123 'A'와 같은 값들이 '상수' 이지만 프로그래밍에서는 상수를 저장공간으로 정의 하였기 때문에 이와 구분하기 위해 리터럴이라는 용어를 사용한다.
- variable : 하나의 값을 저장하기 위한 공간
- constant : 값을 한 번만 저장할 수 있는 공간
- literal : 그 자체로 값을 의미하는 것
/**
변수 : price
상수 : MAX_PRICE
리터럴 : 1000, 10000
**/
int price = 1000;
final int MAX_PRICE = 10000;
-> 리터럴에 '의미있는 이름'을 붙여서 코드의 이해와 수정을 쉽게 만든다. (유지보수하기 용이해진다.)
'A'와 같이 작은 따옴표로 문자 하나를 감싼 것을 '문자 리터럴'이라고 한다.
두 문자 이상의 경우 큰 따옴표로 감싸야 하며 이를 '문자열 리터럴' 이라고 한다.
char alp = 'K';
String name = "Gangsan";
문자열 리터럴은 ""안에 아무것도 넣지 않는 빈 문자열 (empty string)을 허용하지만
문자 리터럴은 반드시 ''안에 하나의 문자가 있어야 한다.
String str = ""; // ok empty string
char ch = ''; // error
char ch = ' '; // ok 공백문자로 초기화