Programming/JAVA

6.형변환연산자

초록깨비 2021. 10. 12. 11:27
728x90

형변환이란?  변수 또는 상수의 타입을 다른 타입으로 변환 하는 것

 

      (타입) 피연산자

 

      double d = 85.4 ;

      int score = int(d) ;      // 피연산자 d를 int로 변경

      int score = int(85.4) ;

          -> int score = 85 ;  // d를 형변환 했어도 변수 d의 값은 85.4 이다(변수 d의 값은 변하지 x)

   

변환 수식 결과값
int -> char (char)65 ‘A’
char -> int (int)’A’  65
float -> int (int)1.6f  1  ( 반올림 x , 버려짐 )
int -> float (float)10 10.0f

 

자동 형 변환 

      float f = 1234 ;           // int 타입의 값을 float 타입의 변수에 저장

      float f = (float)1234 ;   // 컴파일러가 자동으로 변경(자동형변환)

   

      int i = 3.14f ;             // 에러!!! 값 손실 발생(컴파일러가 자동 형변환 못함)  작은 <- 큰

      int i = (int)3.14f ;       // 3으로 변환(반올림 안함)

 

      byte(1) -> short(2byte) -> int(4) -> long(8) -> float(4) -> double(8)

      

      1) char( short <-> char 형변환 안됨, short는 부호 o , char는 부호 x)

      2) float는 소숫점때문에 4byte지만 값의 범위가 long보다 크다

      3) byte b = 100 ;  1 byte : -128~127로 자동 형변환 함

      5) byte b = (byte)100 ;  // byte 타입으로 형변환하여 대입.

                                       // 값의 범위가 값손실이 없으므로 자동 형변환 가능함, 100은 리터럴이므로 자동 형변환

      6)  int i = 100 ;

          byte b = i ;             // 에러!!!  변수안에 어떤값이 들어올지 컴파일러 확신안되서 에러

          byte b = (byte)i ;     // byte 타입으로 형변환하여 대입

 

          byte g = 1000;          // 에러!!!, 값 손실 발생

          byte g = (byte)1000;   // OK,  값 손실 발생해서 -24가 저장됨

728x90