티스토리 뷰

프로그래밍/Java 기초

Java (5), Data Type

열무룩 2020. 2. 12. 19:05

이번 포스팅에서는 Java에서 사용하는 기본적인 Data Type에 대해서 알아보자. 

 

Java는 효율적인 프로그래밍을 하기 위해서 다양한 형태의 Data Type을 가지고 있다.

 

우선 들어가기 전에 Data의 크기와 관련해서 가볍게 짚고 넘어가자.

 

 

Data의 크기


1bit는 0이나 1의 값을 가질 수 있고 byte는 bit 보다 8배 큰 단위다. 그 외에는 모두 1024배씩 커진다.

 

 

정수형


Data type 메모리 크기 표현 가능 범위
byte 1 byte -128 ~ 127
short 2 byte -32,768 ~ 32,767
int 4 byte -2,147,483,648~2,147,483,647
long 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

보편적으로 int를 사용한다. 각기 표현할 수 있는 숫자의 크기가 틀린데,

 

어떤 것을 사용하느냐에 따라서 메모리 사용량이 상이하기 때문에 상황에 맞게 사용하는 것이 효율적이다.

 

즉, 변수를 선언할 때 해당하는 메모리만큼을 사용하겠다고 메모리 공간을 미리 할당받는 구조이기 때문에

 

변수에 들어간 숫자의 크기가 아니라 어떤 type을 선언하느냐에 따라서 할당되는 메모리가 틀려진다.

 

 

byte a;
a = 128;	// Type Mismatch

short b;
b = 128;

int c;
c = 2147483647;
long d;
d = 2147483647;
// 두 변수 c와 d의 메모리 사용량은 동일하다.

 

결국, 변수에 들어올 수 있는 숫자의 최대 크기를 잘 판단해서 Data Type을 지정해야 메모리의 용량을 최소화할 수 있다.

 

하지만 정수를 저장할 때는 int를 사용하는 것이 좋은데, CPU의 처리속도가 빠르기도 하고 충분히 큰 수를 표현할 수 

 

있기 때문이다.

 

 

실수형


Data type 메모리 크기 표현 가능 범위
float 4 byte ±(1.40129846432481707e-45 ~ 3.40282346638528860e+38)
double 8 byte ±(4.94065645841246544e-324d ~ 1.79769313486231570e+308d)

 

실수형도 정수형과 동일한 개념이다. 그러나 실수에서는 double을 사용하는 것이 좋다.

 

그 이유에 대해서는 이번 포스팅 마지막 부분에서 설명하도록 하겠다.

 

double a;
a = 2.2;

int b;
b = 2.2;	// Type Mismatch

 

문자


문자는 char를 사용하고 2 byte의 메모리를 사용한다. 문자와 문자열은 틀린 Data Type임을 인지해야  한다.

 

(3번 포스팅 참고)

 

char a;
a = "A";

char b;
b = "AB";	// Type Mismatch

 

 

상수


상수(constant)는 변하지 않는 값을 의미한다. 가령,

 

a = 1;

 

에서 a 는 변수가 되고 1 은 상수가 되는 것이다. 그러나 한가지 주의할 점이 상수에도 Data Type이 존재한다는 것이다.

 

아래의 예시를 보자.

 

public class ConstantDemo {

	public static void main(String[] args) {
    
		float a = 2.2;
		double b = 2.2;
		
	}

}

2.2는 실수로 우리가 위에서 배웠던 float, double 모두 사용 가능하다. 또한, 값이 두 Data Type이 허용하는

 

값의 범위 안에 있기 때문에 문제가 되지 않을 것 같지만 실제로 실행시키게 되면 float a = 2.2; 에서 Type Mismatch

 

Error 가 발생한다. 그 이유는 무엇일까?

 

마찬가지로 하나의 예를 더 보자.

 

public class ConstantDemo {

	public static void main(String[] args) {
    
		int a = 2147483647;
		long b = 2147483637;

	}

}

 

2147483647 은 int가 가질 수 있는 가장 큰 값의 수로 long에서도 사용가능하지만 마찬가지로 long에서

 

Error가 나오게 된다.

 

정수와 실수에서 이러한 오류가 발생하는 이유는 바로 상수의 Data Type이 Default로 int와 double로 

 

지정되어 있기 때문이다. 따라서 long과 float을 사용하기 위해서는 별도로 상수에 Data Type을 지정해주어야 한다.

 

public class ConstantDemo {

	public static void main(String[] args) {
		float a = 2.2F;
		long b = 2147483637L;

	}

}

 

이와 같이 사용하면 Error가 유발되지 않는다. 즉, 상수에도 Data Type이 있음에 주의해야 하고 더불어서 기본적으로

 

int와 double을 사용하는 것이 사용할 때도 편리하다.

 

마지막으로 int의 경우에서 int보다 작은 범위 값을 가지는 byte와 short는 값의 범위만 알맞게 지정해준다면

 

따로 변수에 type을 지정해주지 않고 사용가능하다.

 

 

@ 강의 출처 : Open Tutorial

 

'프로그래밍 > Java 기초' 카테고리의 다른 글

Java (7), 연산자  (0) 2020.03.31
Java (6), 형 변환  (0) 2020.03.31
Java (4), 변수  (0) 2020.02.12
Java (3), 숫자와 문자열  (0) 2020.01.31
Java (2), Eclipse와 프로젝트 생성하기  (0) 2020.01.23
댓글
링크
최근에 올라온 글
Total
Today
Yesterday