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);