본문 바로가기

하고 싶은 거 하는 개발/Java 프로그래밍 기초

[JAVA] 자바(JAVA) 데이터 형 변환(Type Conversion)에 대하여

728x90

 

 

형 변환(Type Conversion)

형 변환에 대해 알아보기에 앞서 이전에 알아본 데이터 타입에 대한 리마인드를 먼저 진행하겠습니다. 

 

2020/11/06 - [하고 싶은 거 하는 개발/Java 프로그래밍 기초] - [JAVA] 자바(JAVA) 데이터 타입(Data Type, 자료형)과 변수(Variable)에 대하여

 

[정수]

데이터 타입 메모리 크기 범위
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

 

[실수]

데이터 타입 메모리 크기 범위
float 4 byte ±(1.40129846432481707e-45 ~ 3.40282346638528860e+38)
double 8 byte ±(4.94065645841246544e-324d ~ 1.79769313486231570e+308d)

 

[문자]

데이터 타입 메모리 크기 범위
char 2 byte 0 ~ 65,535

 

자바에서 쓰이는 정수, 실수, 문자의 데이터 타입입니다. 

 

형 변환은 하나의 데이터 타입에서 다른 데이터 타입으로 변환하는 것을 의미합니다.

 

예를 들어, 정수 형 데이터 타입 int에서 실수 형 데이터 타입 double로 변환할 수 있습니다.

 

이러한 형 변환은 프로그램 개발 시 유용하게 사용됩니다. 

 

자바에서 형 변환은 두 가지 경우가 있습니다. 자동 형 변환과 명시적 형 변환.

 


자동 형 변환

자동 형 변환은 표현 범위가 좁은 데이터 타입에서 넓은 데이터 타입으로 명시적 지정 없이 자동으로 형 변환이 일어나는 것을 의미합니다. 

 

 

좁은 데이터 타입에서 넓은 데이터 타입으로. 자동 형 변환이 일어나는 규칙

 

 

예시를 통해 자세히 알아보겠습니다.

 

아래와 같이 작성 후 실행합니다.

 

		int a = 1;
		
		double b = a;
		
		System.out.println(b);

 

int 타입 변수 a에 정수 1을 담았습니다.

 

그 후, 실수 형인 double 타입 변수 b에 int 타입의 값을 대입하고 있습니다. 

 

 

 

정수 1이 아닌 실수 1.0이 출력되었습니다.

이는 double 타입이 int 타입보다 더 많은 수를 표현할 수 있기 때문에 자동으로 형 변환이 일어난 것입니다. 

데이터 타입을 변경해도 데이터의 손실이 없다면 자동으로 형 변환이 일어납니다.

 

그렇다면 반대의 경우에는 어떤 일이 일어날까요?

 

아래와 같이 작성 후 실행합니다.

 

		double a = 1.0;
		
		int b = a;
		
		System.out.println(b);

 

위의 경우와 반대로 double 타입 변수 a에 실수 1.0을 담았습니다.

 

그 후, 정수 형인 int 타입 변수 b에 double 타입의 값을 대입하고 있습니다. 

 

 

 

오류가 발생하는 것을 확인하실 수 있습니다.

 

말씀드렸다시피, 자동 형 변환은 좁은 데이터 타입에서 넓은 데이터 타입일 때만 가능합니다.

 

자동 형 변환이 되지 않는 경우에는 수동으로 형 변환을 해야 합니다. 

 

수동으로 형 변환을 하는 것을 명시적 형 변환이라고 합니다.

 


명시적 형 변환

위에서 말씀드렸다시피 자동 형 변환이 되지 않을 때는 명시적 형 변환을 해야 합니다.

 

자동 형 변환이 일어나지 않은 아래의 코드를,

 

		double a = 1.0;
		
		int b = a;
		
		System.out.println(b);

 

아래의 코드로 수정한 후 실행해보겠습니다.

 

		double a = 1.0;
		
		int b = (int)a;
		
		System.out.println(b);

 

2행에 값 앞에 (int)를 추가했습니다. 

 

 

 

오류가 발생하지 않고 정수 1이 출력되었습니다. 

 

아래와 같이 괄호 안에 데이터 타입을 지정해서 값 앞에 위치시키는 것을 명시적 형 변환이라고 부릅니다.

 

(데이터 타입) 데이터 값

 

형 변환은 프로그램 개발 시 다양한 방식으로 사용됩니다. 

 

기본적인 내용만 알아두셔도 나중에 접하게 될 다양한 형 변환에 대해서 어려움 없이 파악하실 수 있으실 겁니다. 

 

 

 

반응형