형 변환(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이 출력되었습니다.
아래와 같이 괄호 안에 데이터 타입을 지정해서 값 앞에 위치시키는 것을 명시적 형 변환이라고 부릅니다.
(데이터 타입) 데이터 값
형 변환은 프로그램 개발 시 다양한 방식으로 사용됩니다.
기본적인 내용만 알아두셔도 나중에 접하게 될 다양한 형 변환에 대해서 어려움 없이 파악하실 수 있으실 겁니다.
'하고 싶은 거 하는 개발 > Java 프로그래밍 기초' 카테고리의 다른 글
[JAVA] 자바(JAVA) 조건문에 대하여(if 문) (0) | 2021.01.21 |
---|---|
[JAVA] 자바(JAVA) 비교 연산자에 대하여(+equals, boolean 타입) (0) | 2020.11.22 |
[JAVA] 자바(JAVA) 연산자에 대하여 (0) | 2020.11.17 |
[JAVA] 자바(JAVA) 주석에 대하여 (0) | 2020.11.09 |
[JAVA] 자바(JAVA) 데이터 타입(Data Type, 자료형)과 변수(Variable)에 대하여 (0) | 2020.11.06 |