1. 변수 - (2) 타입 변환

한승록·2023년 3월 22일
0

자바 기초

목록 보기
2/21
post-thumbnail
앞서 알려드렸던 변수의 유형에 따라 수행할 수 있는 내용은 다릅니다.
값을 저장할 때는 '대입 연산자' (=) 를 통해 우변의 값을 좌변의 공간에 복사하여 저장하게 됩니다.
이때 좌변 변수의 자료형과 값의 자료형이 일치하여야만 대입이 실행됩니다.
public class Type{
	public static void main(String[] args) {
    	int a = 10;				// case 1. 정수값을 정수형 변수에 저장(O)
        long b = 20;			// case 2. 정수값을 정수형 변수에 저장(O)
        byte c = 30;			// case 3. 정수값을 정수형 변수에 저장(O)
        short d = 40000;		// case 4. 정수값을 정수형 변수에 저장 but 변수가 수용할 수 있는 크기 초과(X)
        char e = (char)1.2;		// case 5. 실수값을 정수형 변수에 저장, 데이터의 일부 손실이 발생(X)
        double f = 3;			// case 6. 정수값을 실수형 변수에 저장, 크기초과도 없고 손실도 없음(O)
    }
}

case 4

case 5

위의 예시들을 보면 'case 1 ~ 3' 은 자료형도 일치하고 크기도 일치하여 저장되는 모습을 보실수 있을 겁니다.

하지만 'case 4' 의 경우 자료형은 일치하였으나 크기 초과 로 인해 저장이 불가능 하며 'case 5'자료형 불일치로 데이터 저장이 불가능합니다.

그런데 'case 6' 는 저장이 가능한 모습을 보여줍니다. 이는 정수가 실수에 포함되기 때문에 가능한 것입니다. 이처럼 더욱 큰 범위의 자료형 변수에 작은 범위의 자료형 변수가 저장 될 수도 있습니다.


그렇다면 자료형이 일치하지 않으면 값을 저장할 방법은 없을까요?
여기서 필요한 개념이 '타입변환' 입니다.
'타입 변환' 이란 서로 다른 타입을 하나의 타입으로 일치시켜주는 작업인데 여기에는 '묵시적 타입 변환''명시적 타입 변환'의 방식이 존재합니다.

'묵시적 타입 변환' 은 위에서 나온 'case 6' 의 경우를 지칭합니다.
해당 작업 수행 시 별다른 문법을 적용하지 않아도 서로 다른 자료형 변수에 저장됩니다.


'명시적 타입 변환' 은 저장할 변수의 값을 직접 변환해주어야 합니다.
(방식은 다음과 같습니다.)
int num = 1
double pnum = 3.14;
int sum = 0;
sum = num + (int)pnum;	// '(변경할 자료형)다른 자료형 변수'
이처럼 '묵시적 타입 형변환' 과는 달리 '(변경할 자료형)' 을 변수나 데이터 앞에 적어주셔야 형변환이 발생하게 됩니다.
profile
개발 학습

0개의 댓글