비전공자의 개발과 친해지기/변수

[JAVA : 변수]4. 형 변환

justdoIT0730 2022. 4. 7. 15:38
728x90
728x90
 프로그래밍을 하다보면 어쩔 수 없이 자료형을 변환해주어야 하는 상황이 발생합니다. 그럴 때는 형변환(Type Casting)이라는 방법을 이용해 자료형을 변환할 수 있습니다.

- 명시적 형변환

import java.io.*;
class Main {
    public static void main(String[] args) {
        double varDouble = 98.76;
        int varInteger = varDouble;
        System.out.println(varInteger);	
    }
}

 

 4번째 줄을 보면 double형 변수 varDouble에 98.76이라는 값을 저장하고, 5번째 줄에서 varDouble의 값을 int형 변수 varInteger에 대입을 하고 있습니다.

 위 프로그램을 실행해보면 실수값을 정수형에 넣으려고 시도하여 자료형이 맞지 않아 에러가 발생합니다.

 

이번에는 프로그램이 실행 가능하도록 아래 코드로 수정해 보았습니다.

 

import java.io.*;
class Main {
    public static void main(String[] args) {
        double varDouble = 98.76;
        int varInteger = (int)varDouble;
        System.out.println(varInteger);	
    }
}

 

 vaDouble 앞에 '(int)'라는 문구를 넣어줌으로써 double형의 값을 int형으로 강제 변환 시켰습니다. 이렇게 변환하고자 하는 변수 형태를 명시적으로 지정하여 자료형을 바꾸는 행위를 명시적 형변환 이라고 합니다.

 명시적으로 형변환을 하고 싶으면 위와 같이 저장하고자 하는 목표 자료형을 괄호로 감싸준 뒤, 이를 바꾸려는 데이터 앞에 적어주면 됩니다.

 

 위 코드를 실습하게 된다면 한가지 이상한 점을 발견 하실 겁니다. 분명히 98.76 값을 입력했는데 출력하면 98이 나옵니다. int형 자료형에는 정수 데이터만 저장될수 있기 때문에, double 값이 int형으로 명시적 형변환 되면 실수부 데이터는 유실됩니다.

 

즉, varInterger에 저장된 값은 98.76 중 정수부인 98만 저장되게 됩니다.

 

 

- 묵시적 형변환

 명시적 형변환이 바꾸고자 하는 형태를 명시해서 자료형을 바꾸는 것이라면, 형변환 개념은 같으나 형태를 명시하지 않는 묵시적 형변환도 존재합니다. 묵시적 형변환은 바꾸고자 하는 타입을 명시하지 않아도 자료형이 자동으로 바뀌는 형변환 입니다. 

 

import java.io.*;
class Main {
    public static void main(String[] args) {
        short varShort = 5;
        double varDouble = varShort;
        System.out.println(varDouble); 
    }
}

 

 short형의 변수 varShort의 값을 그대로 double형 varDouble에 대입해도 컴파일 에러가 발생하지 않습니다. 자동적으로 묵시적 형변환되어 에러가 발생하지 않는 것입니다.

 

 묵시적 형변환이 가능한 조건은 "목표 자료형 크기 > 바꾸려는 자료형 크기" 입니다.

 short형의 크기는 2 Byte이지만, double형의 크기는 8 Byte 이므로 묵시적 형변환이 가능한 것입니다.

 

 설명한 두 가지 형변환은 boolean형을 제외한 나머지 기본형 자료형 사이에서 모두 사용 가능합니다. 물론 참조형 자료형도 형변환이 가능하지만 참조형 자료형의 형변환은 데이터 사이즈 및 여러 조건이 필요합니다.

 

 

유영식 선생님 감사합니다.

728x90
728x90