●기본타입
값의 종류 | 기본 타입 | 메모리 사용 크기 | 저장되는 값의 범위 | |
정수 | byte | 1 byte | 8 bit | -27~27-1 (-128~127) |
char | 2 byte | 16 bit | 0~216-1 (유니코드:\u0000~\uFFFF, 0~65535) | |
short | 2 byte | 16 bit | -215~215-1 (-32,768~32,767) | |
int | 4 byte | 32 bit | -231~(231-1)(-2,147,483,648~2,147,483,647) | |
long | 8 byte | 64 bit | -263~(263-1) | |
실수 | float | 4 byte | 32 bit | (+/-)1.4E-45~(+/-)3.4028235E38 |
double | 8 byte | 64 bit | (+/-)4.9E-324~(+/-)1.7976931348623157E308 | |
논리 | boolean | 1 byte | 8 bit | true, false |
기본타입 안 값의 종류를 깊게 알아봅시다.
●정수 타입
정수타입 | byte | char | short | int | long |
바이트 수 | 1 | 2 | 2 | 4 | 8 |
자바는 기본적으로 정수 연산을 int 타입 (그냥 많이 사용함)
이제 본격적으로 정수 타입 하나씩 알아보아요
byte타입
- 1byte 부호있는 정수 값 저장
- 값의범위 : -128~127
-실행중에 값의 범위를 초과할 경우
예를 들어주는게 제일 이해하기 편하다
byte a = 127; a++; a의 값은 -128이다 이유는 간단하다 값의 범위를 초과했다 |
char타입
-2byte 부호없는 정수값 저장
-정수타입 5가지중에서 부호가 없다
-char 타입에는 한 문자를 유니코드로 저장
-하나의 문자 리터럴을 작은 따옴표(')로 감싸야 한다
예) char var = 'A' //유니코드 0x0041
-직접 유니코드 정수 값을 저장
예) char c1 = 65; char c2 ='\u0041'; c1,c2의 유니코드는 A이다
-유니코드를 알고 싶을 경우
예) char c = 'A'; int uniCode = c; uniCode 값은 65이다
short타입
- 2byte 부호있는 정수값 저장
- 값의범위 : -32,768~32,767 (-215~215-1)
- C언어와 타입 호환을 위해 사용되며 비교적 자바에서 잘 사용안함
int타입
- 4byte 부호있는 정수값 저장
- 값의범위 : -2,147,486,648~2,147,483,647(-231 ~ 231-1)
예) int number1 = 10;
int number2 = 012;
int number3 = 0xA; 이 세개의 값은 10이다
long타입
- 8byte 부호있는 정수값 저장
- 값의 범위 : -9,223,372,036,854,775,808~9,223,372,036,854,775,807 (-263~(263-1))
- 값의 표현
int 범위의 리터럴은 상관 없음
int 범위를 초과하는 리터럴은 반드시 L 또는 ㅣ를 붙여야 됨
예)
long value1 = 10;
long value2 = 20L;
//long value3 = 1000000000000; // 컴파일 에러
long value3 = 1000000000000L;
●실수타입
실수 타입 | float | double |
바이트 수 | 4 | 8 |
- 부동 소수점 방식으로 저장(±:부호 m:가수 n:지수)
± m x 10n |
- 가수: 0<= m < 1 범위의 실수 (예 : 1.2345 ->0.12345 x 101)
- 동일한 메모리 크기를 가지는 int와 long 보다 더 큰 수를 저장할 수 있음
float : 부호(1bit) + 지수(8bit) + 가수(23bit) = 32bit = 4byte
double : 부호(1bit) + 지수(11bit) + 가수(52bit) = 64bit = 8byte
-실수 리터럴의 기본 타입은 double이다.
float 리터럴은 끝에 F 또는 f를 붙인다.
예) double value1 = 3.14;
float value2 = 3.14; // 에러
float value2 = 3.14F;
-정수 리터럴에 10의 지수를 나타내는 E 또는 e가 포함되어 있을 경우
실수 타입에 저장해야한다.
예) int value1 = 3000000; //3000000
double value2 = 3e6; //3000000
float value3 = 3e6f; //3000000
double value4 = 2e-4; //2e-3
●논리 타입
- boolean
· 1byte 크기를 가지며 논리값 true 또는 false를 저장
· 두가지 상태값을 저장할 필요성이 있을 경우 사용
· 조건문, 제어문의 실행 흐름을 변경할 때 주로 사용
'자바공부 > 변수와 타입' 카테고리의 다른 글
JAVA(자바)-타입 변환 중에 강제 타입 변환 (2) | 2020.12.10 |
---|---|
JAVA(자바)-타입 변환 중에 자동 타입 변환 (0) | 2020.12.04 |
JAVA(자바)-리터럴(literal) (0) | 2020.11.28 |
JAVA(자바)-변수 (0) | 2020.11.27 |