달력

4

« 2020/4 »

  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  •  
  •  

자동형 변환-프로모션/디모션

   

   

소스코드

  1.  public class CastEx03 {
  2.         public static void main(String[] args){
  3.                  
  4.                  
  5.                 System.out.println("");
  6.                 System.out.println("=========프로모션=========");
  7.                 /*프로모션:
  8.                 자료형으로 승격이 일어나는 형태
  9.                 정보의 손실이 전혀 없으며 자동적으로 발생*/
  10.                 byte b1 = 127;
  11.                 byte b2 = 127;
  12. //              byte b3 = b1 + b2;      //Error: cannot convert from int to byte
  13.                 int i1 = b1 + b2;      
  14.                 /*32bit(4byte)미만 byte 데이터 연산시 32bit int형으로 승격됩니다. 데이터 타입이 다르므로 , int형은 byte형으로 저장되지 않습니다.
  15.                 Error: cannot convert from int to byte*/
  16.                 System.out.println("i1= " + i1 );
  17.                 System.out.println("b1 + b2 = " + (b1+b2) );    // 자동적으로 int 형변환 됩니다.
  18.                  
  19.                 System.out.println("");
  20.                 short s1 = 12345;
  21.                 short s2 = 12345;
  22.                 int i2 = s1 + s2;
  23. //              32bit(4바이트)미만 shore 데이터 연산시 32bit int형으로 승격
  24.                 System.out.println("i2= " + i2 );
  25.                 System.out.println("s1 + s2 = " + (s1+s2) );    // 자동적으로 int 형변환 됩니다.
  26.                  
  27.                 System.out.println("");
  28.                 int int1 = 12345;
  29.                 long lg1 = 1234567L;
  30. //              long            = int           long
  31.                 long resultL = int1 +   lg1;    // int -> long 자동적으로 형변환
  32.                 System.out.println("resultL = " + resultL);
  33.                  
  34.                 System.out.println("");
  35.                 int int2 = 12345;
  36.                 double d1 = 100.3D;
  37.                 double resultD= int2 + d1;      // int -> double 자동적으로 형변환
  38.                 System.out.println("resultD = " + resultD);
  39.                  
  40.                  
  41.                 System.out.println("");System.out.println("");
  42.                 System.out.println("=========디모션=========");
  43.                 /*디모션:
  44.                 작은 자료형으로 강등
  45.                 자료의 손실이 있을 있음
  46.                 명시적으로 형변환해야 */
  47.                 byte b4 = 125;
  48.                 byte b5 = 125;
  49.                 byte result_byte = (byte)(b4 + b5);    
  50.                 //연산결과로 int 자동으로 형변환 되므로 byte 자료형을 유지하기 위해 int -> byte 강제 형변환
  51. //              (byte): 캐스트 연산자를 사용하여 강제 형변환
  52.                 System.out.println("result_byte = " + result_byte);
  53.                 System.out.println("b4 + b5 = " + (b4 +b5) );
  54.                  
  55.                 System.out.println("");
  56.                 short s4 = 1234;
  57.                 short s5 = 1234;
  58.                 short result_short = (short)(s4 + s5);
  59.                 System.out.println("s4 + s5 = " + (s4 +s5) );
  60.                 System.out.println("result_short = " + result_short);
  61.                  
  62.                 System.out.println("");
  63.                 int int3 = 1234;
  64.                 float f1 = 100.5F;
  65. //              int result_int1 = int3 + f1;
  66.                 int result_int2 = int3 + (int)f1;       //float ->int 강제 형변환 (절삭됨)
  67.                 System.out.println("int3 + f1 = " + (int3 + f1) );
  68.                 System.out.println("result_int2 = " + result_int2);
  69.                  
  70.                 System.out.println("");
  71.                 int int4 = 1234;
  72.                 long lg2 = 1234L;
  73.                 int result_int3 = int4 + (int)lg2;      //long -> int 강제 형변환
  74.                 System.out.println("int4 + lg2 = " + (int2 +lg2) );
  75.                 System.out.println("result_int3 = " + result_int3);
  76.                  
  77.                  
  78.                  
  79.         }
  80.    
  81. }


   

   

출력결과

   

Posted by codedragon codedragon

댓글을 달아 주세요