min's devlog

형변환(Casting) 본문

til/Java

형변환(Casting)

값진 2022. 3. 8. 16:44

형변환 (Casting)

형 변환의 의미

- 변수 또는 상수의 타입을 다른 타입으로 변환하는 것을 말한다. 프로그램에서 값의 대입이나 연산을 수행할 때는 같은 타입끼리만 가능하기 때문에,  연산을 수행하기 전에 같은 타입으로 만드는 작업이 필요하다.

- 코드를 유연하게 작성하기 위한 도구이기도 하다.

 

 

1. 암시적 형변환 (= 자동 타입 변환)

 

- 큰형 = 작은형, 100% 안전한 타입
- short = byte; //2칸 = 1칸
- int = byte; //4칸 = 1칸
- long = byte; //8칸 = 1칸
- int = short; //4칸 = 2칸
- long = short; //8칸 = 2칸
- long = int; //8칸 = 4칸

 

        int i = 100;
        char c = 'a';
        int j = c;      // char 타입에서 int 타입으로 자동 변환.
        double d = i; // int 타입에서 double 타입으로 자동 변환. 
                
        System.out.println("int타입 변수 j의 값 : "+j);
        System.out.println("double타입 변수 d의 값: "+d);

실행 결과

int타입 변수 j의 값 : 97

double타입 변수 d의 값 : 100.0



2. 명시적 형변환 (= 강제 타입 변환)


- 작은형 = 큰형
- 작은형이 소화할 수 있는 범위의 원본값이면 복사가 가능하고, 작은형이 소화할 수 없는 범위의 원본값이면 손실분이 생긴다. > 데이터의 손실이 발생할 수도 있고, 발생하지 않을 수도 있다.
- 데이터의 손실이 일어난다면 정확한 연산이 불가능하기 때문에 예상하지 못한 결과를 얻을 수 있다. 그러므로 강제 형변환시 개발자의 주의를 요함!!

 

        //int -> byte 강제 형변환(값이 작을 경우)
        int i = 10;
        byte b = (byte)i; //강제 형변환을 하지 않으면 에러 발생.
        System.out.println("[int -> byte] i의 값 :"+i+" b의 값:"+b);
        
        //int -> byte 강제 형변환(값이 큰 경우)
        int j = 1000;
        byte c = (byte)j; //강제 형변환을 하지 않으면 에러 발생.
        System.out.println("[int -> byte] j의 값 :"+j+" c의 값:"+c);

 

실행 결과

[int -> byte] i의 값 :10, b의 값:10

[int -> byte] i의 값 :1000, b의 값:-24

 

 

 

'til > Java' 카테고리의 다른 글

Java 달력 만들기  (0) 2022.03.17
연산자(Operator)  (0) 2022.03.10
Output과 Input  (0) 2022.03.08
변수(Variable)  (0) 2022.03.07
자료형 (Data Type)  (0) 2022.03.07
Comments