Language/Java

Java 형변환 - 자동 형변환

괘창 2024. 7. 1. 21:57

■ 자동 형변환

형변환
● 작은 범위에서 큰 범위로 값을 넣을 수 있다.
 - 예) int >> long >> double
● 큰 범위에서 작은 범위는 아래와 같은 문제가 발생할 수 있다.
 - 소수점 버림
- 오버 플로우

 

※ 작은 범위에서 큰 범위로 대입은 허용한다.
자바에서 숫자를 표현할 수 있는 범위
int < long < double
int 보다는 long이, long 보다는 double가 더 큰 범위를 표현할 수 있다.

# 작은 범위에서 큰 범위에 값을 대입하는 경우 특별한 문제 없이 잘 수행된다.

 

 

예제 코드)

package cond;

public class Casting1 {
    public static void main(String[] args) {
        int intValue = 10;
        long longValue;
        double doubleValue;

        longValue = intValue; // int > long
        System.out.println("longValue = " + longValue); //10

        doubleValue = intValue; // int > double
        System.out.println("double = " + doubleValue); // 10.0

        doubleValue = 20L; // long > double
        System.out.println("doubleValue2 = " + doubleValue);
    }
}

 

 

실행 결과)

  • 자바는 기본적으로 같은 타입에 값을 대입할 수 있따.
  • int >> long 을 비교해보면 long 이 int 보다 더 큰 숫자 범위를 표현한다.
    작은 범위 숫자 타입에서 큰 범위 숫자 타입에 대입하면 문제되지 않는다.
  • long >> double 의 경우에도 double 은 부동 소수점을 사용하기 때문에 더 큰 숫자 범위를 표현한다.
  • 정리하면 작은 범위에서 큰 범위로의 대입은 자바 언어에서 허용한다.
    쉽게 설명하면 큰 그릇은 작은 그릇에 담긴 내용을 담을 수 있다.

■ 자동 형변환

# 하지만 결국 대입하는 형(타입)을 맞춰야하기 땜누에 개념적으로는 아래와 같이 동작한다.

// intValue = 10
doubleValue = intValue
doubleValue = (double) intValue // 형 맞추기
doubleValue = (double) 10 // 변수 값 읽기
doubleValue = 10. 0 // 형변환

# 앞에 (double) 과 같이 적어주면 int 형이 double 형으로 형이 변한다.
# 이렇게 형이 변경되는 것을 형변환이라 한다.

# 작은 범위 숫자 타입에서 큰 범위 숫자 타입으로의 대입은 개발자가 직접 형변환을 안해도 된다.
   이런 과정이 자동으로 일어나기 때문에 자동 형변환 또는 묵시적 형변환 이라 한다.