변수란 값의 저장공간이고, 자료형은 값이 무슨 타입인지를 나타낸다.
자바의 기본형에는 c와 마찬가지로 char, int, float, double, long 등등이 있다.
다만, 조금 다른점은 char타입이 c에서는 1byte이지만 자바에서는 2byte라는 차이점이 있다.
그 이유는 c의 char가 이스키코드를 기반으로 만들어졌기 때문이다. c보다 나중에 나온 언어인 자바는 유니코드 체계를 사용하기
때문에 char가 2byte이다.
자바의 기본형
자료형 | 값의 범위 | 크기(byte) |
boolean | true, false | 1 |
char | 0 ~ 25535 (2^16 - 1) | 2 |
byte | -128 ~ 127 | 1 |
short | -32_768 ~ 32_767 | 2 |
int | -2^31 ~ 2^31-1 | 4 |
long | -2^63 ~ 2^63 | 8 |
float | 1.4E-45 ~ 3.4E38 | 4 |
double | 4.9E-324 ~ 1.8E308 | 8 |
float와 double은 크기 말고도 주의해야 할 점이 있다. float의 정밀도는 7자리까지이고 double의 정밀도는 15자리 정도까지이다.
이러한 문제가 발생하는 이유는 float와 double이 부동 소수점방식을 사용하기 때문이다.
리터럴 : 자바에서는 '값'을 리터럴이라고 한다
리터럴과 상수의 차이
자바에서 상수는 final 키워드로 선언되는 변수를 의미한다. c나 c++에서는 const로 변수의 값을 변경하지 않겠다는 의미이다.
그에 반면 리터럴은 값 그 자체를 의미한다.
일반변수나 final변수에 들어가는 '값'
참고로 실수형을 사용할 때 default 자료형은 double이므로 float를 사용할 때에는 리터럴에 접미사 f를 붙여줘야 한다.
l-value와 r-value
l-value는 read와 write가 가능하지만 r-value는 read만 가능하다.
ex)
- int a = 10;
- int b = a + b;
- a + b = 100;
위의 예제에서 read와 write 둘 다 가능한 것은 { {a}, {b} } 두 가지 뿐이댜.
a + b는 연산이 되고 b에 대입될 뿐이지 write가 불가능하다.
'Java' 카테고리의 다른 글
arraycopy 메서드를 이용한 배열의 복사 (0) | 2023.04.26 |
---|---|
for each (0) | 2023.04.25 |
인코딩과 디코딩 (0) | 2023.04.21 |
scanner 사용법 (0) | 2023.04.18 |
객체지향 (0) | 2023.04.03 |