본문 바로가기
자바공부/변수와 타입

JAVA(자바)-데이터 타입

by You진 2020. 11. 29.

●기본타입

값의 종류 기본 타입 메모리 사용 크기 저장되는 값의 범위
정수 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를 저장

   · 두가지 상태값을 저장할 필요성이 있을 경우 사용

   · 조건문, 제어문의 실행 흐름을 변경할 때 주로 사용