IT/Java

자바 자료형 형변환, 자동(묵시적) 형변환, 강제(명시적) 형변환

노마드오브 2018. 7. 9. 00:06

○ 자료형 형변환

1. 자동(묵시적) 형변환

큰기억장소 = 작은기억장소 ;


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

작은기억장소 = (작게)큰기억장소 ;




○ 기본 데이터 타입별 크기

정수형 byte(1), short(2), int(4), long(8)

실수형 float(4), double(8)


같은 정수형 또는 같은 실수형끼리는 바이트크기를 기준으로 형변환됨.

정수형과 실수형 사이에 변환에서는 실수형이 무조건 정수형보다 큼(바이트 크기에 상관없음!)





○ 예제소스

double a; // 실수형 변수 a

a = 7; // double형 = int형 [자동형변환]

System.out.println("a=" + a); //7.0


int b;

b = (int)3.4; // int형 = double형; [강제형변환]

System.out.println("b=" + b); //3


int c;

c = 'A'; // int형 = char형 [자동형변환] 

System.out.println("c="+c); //65


// int형보다 작은 정수형에 대입할때만 예외적으로 값의 크기를 확인함


byte bb; // -128 ~ +127

bb = 127;

bb = (byte)128; // byte형 = int형

System.out.println("bb="+bb); // -128


char ch;

ch = 65; // char형 = int형

System.out.println("ch=" + ch); // A


ch = 'a';

System.out.printf("%c => %d\n", ch, (int )ch);


ch = '0';

System.out.printf("%c => %d\n", ch, (int)ch);


float f = (float) 2.7; // float형 = double형

System.out.println("f=" + f);


// 실수는 항상 정수보다 큼. 바이트 크기에 상관없음.

float ff = 20_000_000_000L; // float형 = long형

System.out.println("ff=" + ff);