자바 프로그래밍, 형 변환 이야기
- 개발 스터디/Java
- 2024. 4. 7.
반응형
728x90
반응형
int iNum = 20;
float fNum = iNum;
double dNum;
dNum = fNum + iNum;
이번 포스팅에선 형 변환에 대해 알아보자
1. 형 변환이란?
각기 다른 자료형의 값을 연산(계산) 한다고 생각해보자
int 형 숫자 1과 double 형 3.14를 더하기 한다고 하면
서로 다른 자료형을 같은 자료형으로 바꿔준 후 계산해야한다
이렇게 서로 다른 자료형을 같은 자료형으로 바꿔주는 작업을
'형 변환' 이라고 한다.
2. 묵시적 형 변환
바이트 크기가 작은 자료형에서 큰 자료형으로 대입
byte bNum = 10;
int iNum = bNum;
위의 경우 bNum의 크기는 1바이트이고
iNum의 크기는 4바이트이므로 자료 손실 없이
bNum에 들어있는 모든 값이 iNum에 저장된다
덜 정밀한 자료형에서 더 정밀한 자료형으로 대입
int = iNum2 = 20;
float fNum = iNum2;
int형 보다 float형이 더 정밀하게 데이터를 표현할 수 있으므로
실수형인 float형으로 변환 된다
연산 중에 자동 변환
int iNum = 20;
float fNum = iNum;
double dNum;
dNum = fNum + iNum;
예시의 경우 두번의 형 변환이 일어난다.
int형에서 float 형으로 한번, 다시 float형에서 double 형으로 한번
덜 정밀한 수에서 더 정밀한 수로, 바이트 크기가 작은 수에서 큰수로
변환 되는 경우 자동으로 형 변환이 일어난다.
3. 명시적 형 변환
바이트 크기가 큰 자료형에서 작은 자료형으로 대입
int iNum = 10;
byte bNum = (byte)iNum;
강제로 형을 바꾸려면 바꿀 형을 괄호를 써서 명시해야 한다.
byte형은 1바이트로 int형보다 크기가 작기때문에 자료 손실이 발생할 수 있다.
따라서 변환할 자료형을 명시적으로 써 주어야 하며 이를 [강제 형 변환] 이라고 한다.
더 정밀한 자료형에서 덜 정밀한 자료형으로 대입
double dNum = 3.14;
int iNum2 = (int)dNum;
실수형에서 정수형으로 값이 대입되는 경우
형 변환을 명시적으로 해주어야 한다.
이 경우 소수점 이하 부분은 생략되고
정수 부분만 대입 된다.
연산 중 형 변환
package chapter2;
public class ExplicitConversion {
public static void main(String[] args) {
double dNum1 = 1.2;
float fNum2 = 0.9F;
int iNum3 = (int) dNum1 + (int) fNum2;
int iNum4 = (int) (dNum1 + fNum2);
System.out.println(iNum3);
System.out.println(iNum4);
}
}
위 코드는 연산 중 형 변환 예시 코드이다.
iNum3은 1 + 0이 되어 1이 출력되고
iNum4는 1.2+0.9의 결과 값을 int로 형 변환 하기 때문에
출력되는 값은 2.1에서 0.1을 생략한 2가 된다.
728x90
반응형
'개발 스터디 > Java' 카테고리의 다른 글
자바(Java) 프로그래밍, 조건문, if문, if else문, if else if문 (1) | 2024.04.07 |
---|---|
자바(Java) 프로그래밍, 연산자 이야기 Part. 2 비트 연산자 (1) | 2024.04.07 |
자바(Java) 프로그래밍, 연산자 이야기 Part. 1 기본 연산자 (0) | 2024.04.07 |
자바 JAVA 상수와 리터럴 feat. 변수 선언 (0) | 2024.04.06 |
새로운 영역으로의 도전, 자바(Java) 환경 설정 (0) | 2024.04.04 |