본문 바로가기
  • 소소한 개발자 이야기
Software/너가 쓰던 냄비 받침(자바)

Chapter 01-05: 타입 변환

by Siwan_Min 2021. 3. 1.
728x90

타입 변환

타입 변환이란 데이터 타입을 다른 데이터 타입으로 변환하는 것을 말합니다. 예를 들어, byte 타입을 int 타입으로 변환하거나, 반대로 int 타입을 byte 타입으로 변환하는 행위를 말합니다.


자동 타입 변환

 

자동 타입 변환은 말 그대로 자동으로 타입 변환이 일어나는 것을 의미! 

- 자동 타입 변환은 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생

 

이게 무슨 말이냐!? 우리는 이 전 챕터에서 자료형을 공부 했습니다. 

 

타입의 순서는 아래와 같습니다. 

 

byte < short < int < long < float < double

 

byte의 허용 범위가 제일 작고 double의 허용 범위가 제일 큰 범위를 갖습니다.

그렇다면 자동 타입 변환은 byte -> int 타입으로 변환 할 때 발생한다는 뜻 입니다. 

하지만 그 반대로 int -> byte 은 자동 변환이 안된다는 뜻이지요 !! 만약 이렇게 한다면 컴파일 에러가 발생합니다. 

 

public class Main
{
	public static void main(String[] args) {
		
		byte byteValue = 10;
		int intValue = byteValue;
		
		System.out.println("intValue: " + intValue);
		
		char charValue = 'A';
		intValue = charValue;
		System.out.println("A의 유니코드: " + intValue);
		
		intValue = 50;
		long longValue = intValue;
		System.out.println("longValue: " + longValue);
		
		longValue = 100;
		float floatValue = longValue;
		System.out.println("floatValue: " + floatValue);
		
		floatValue = 100.5F;
		double doubleValue = floatValue;
		System.out.println("doubleValue: " + doubleValue);
	}
}

 


강제 타입 변환 

 

꼭 작은 타입에서 큰 타입으로 변화만 가능한 것은 아닙니다. 큰 허용 범위 타입을 작은 허용 범위 타읍으로 강제로 나눠서 저장이 가능한데 이것을 강제 타입 변환이라고 합니다. 강제 타입 변환은 캐스팅 연산자 괄호 ()를 사용하는데, 괄호 안에 들어가는 타입은 나누는 단위입니다. 

 

public class Main
{
	public static void main(String[] args) {
		
		int intValue = 10;
		byte byteValue = (byte) intValue;
		
		System.out.println(byteValue);
		
		
        double doubleValue = 3.14;
        intValue = (int) doubleValue;
        
        System.out.println(intValue);

	}
}

 


정수 연산에서의 자동 타입 변환

 

정수 타입 변수가 산술 연산식에서 피연산자로 사용되면 int 타입보다 작은 byte, short 타입의 변수는 int 타입으로 자동 타입 변환되어 연산을 수행합니다. 

 

public class Main
{
	public static void main(String[] args) {
		
		// byte 타입 변수가 피연산자로 사용된 경우
		byte x = 10;
		byte y = 20;
		
		// byte result = x + y;  // 컴파일 에러 발생
		
		int result1 = x + y;
		System.out.println(result1);
		
		//---------------------------------------------
		// int 타입 변수가 피연산자로 사용된 경우  
		
		int A = 10;
		int B = 20;
		
		int result2 = A + B; 
		
		System.out.println(result2);
		
	}
}

위 예시 소스에서 byte 변수 x, y 가 피연산자로 사용되면 int 타입으로 변환되어 연산되므로 연산 결과를 byte 변수에 저장하면 컴페일 에러가 발생합니다. 따라서 연산 결과를 int 변수에 저장해야 합니다. 

 

실수 연산에서의 자동 타입 변환

 

실수 타입 변수가 산술 연산식에서 피연산자로 사용될 경우 두 피연산자가 동일한 타입으로 연산되지만, 피연산자 중 하나가 double 타입이라면 다른 피연산자도 double 타입으로 자동 타입 변환되어 연산을 수행합니다. 즉, 다시 말하면 피연산자를 연산 할 때 두 개의 타입중 타입의 범위가 더 높은 것을 따라가게 됩니다. 

 

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
	// write your code here
        Scanner sc = new Scanner(System.in);

        int intValue = 10;
        double doubleValue = 5.5;
        double result = intValue + doubleValue;

        System.out.println(result);
    }
}

 

728x90

'Software > 너가 쓰던 냄비 받침(자바)' 카테고리의 다른 글

Chapter 01 - 4 : 자료형  (0) 2020.09.10
Chapter 01 - 3 : 변수  (0) 2020.08.16
Chapter 01 - 2 : 또 Hello world  (0) 2020.08.14
Chapter 01 - 1 : 완전 완전 기초  (0) 2020.08.14
Introduction  (0) 2020.08.13

댓글