Java

데이터형 변환하기(Casting)

에어팟맥스 2022. 6. 6. 16:13

1. 자동 형변환(묵시적 형변환)
 --> 데이터타입의 크기가 작은 것에서 크기가 큰쪽으로는 자동적으로 형변환이 발생된다. 

 byte(1byte) --> short(2byte) --> int(4byte) --> long(8byte)
     개미              병아리            강아지           사람   
    개미집              병아리집          강아지집          안방
 
 float(4byte) --> double(8byte) 
 
 --> 정수타입은 실수타입으로 자동형변환이 발생한다.
 
 char(2byte)
 --> char타입은 int형으로 자동형변환이 발생한다.

public class Main_Casting {

	public static void main(String[] args) {
		
		//1. 자동 형변환(묵시적 형변환)
		byte no1 = 100; // byte => 1byte -128 ~ 127
		
		short sh = no1; // short => 2byte -32,768 ~ 32,767
		// 위의 것은 short sh = (short)no1; 으로 되는 것이다.
        // sh => 100
        
        int in = sh; // int => 4byte -2,147,483,648 ~ 2,147,483,647
		// 위의 것은 int int = (int)sh; 으로 되는 것이다.
        // in => 100
        
        long ln = in; // long => 8byte -9,223,372,036,854,775,808 ~  9,223,372,036,854,775,807
		// 위의 것은 long in = (long)in; 으로 되는 것이다.
        // ln => 100
        
        float ft = 1.234f; // float 단정밀도 소수점 이하 7자리까지 표현
        // ft => 1.234
        
        double db = ft; // double 배정밀도 소수점 이하 15~16자리까지 표현
		// double db = (double)ft;
        // db => 1.2339999675750732


2. 강제 형변환(casting)
 --> 데이터타입의 크기가 큰것을 작은것으로 강제적으로 형변환 시키는 것을 말한다.
         크기가작은타입 = (크기가작은타입)크기가큰타입
             
         실수를 정수로 강제적으로 형변환하는 것을 말한다.
         소수부는 무조건 절삭을 해버리고 정수만 나온다.
         정수 = (정수)실수        

 

		double db2 = 1.23456789;
		// db2 => 1.23456789
		
        float ft2 = (float)db2;
		// ft2 => 1.2345679
		
		int in2 = 40000;
		// in2 => 40000
		
		short sh2 = (short)in2;
		// sh2 => -25536  이상한 값이 나온다.
		
		int in3 = 30000;
		short sh3 = (short)in3;
		// sh3 => 30000
		
		long ln2 = 3000000000L; // long 8byte
        // ln2 => 3000000000
		float ft3 = ln2; // float 4byte
		// 위의 것은 float ft3 = (float)ln2; 으로 자동형변환 된다.
		// ft3 => 3.0E9
		
		double db3 = 123.98765;
		int in4 = (int)db3; //실수를 정수로 강제형변환하면 소수부를 잘라버리는 절삭의 효과를 가진다.