[Java]20331データ変換


前回の投稿に続いて、Javaデータに関連する可能性のある混同部分を整理します.
(例と説明はYouTubeライフコードのJava入門コースを参照してまとめた.)
  • 自動変換(暗黙変換)
    double a = 3.0F;
  •  위의 코드는 double 타입의 변수 a에 float타입의 값을 대입하고 있다 이때 3.0F의 값은 자동으로 doulbe타입으로 형 변환이 일어난다. 
     이것이 가능한 이유는 double 타입이 float타입보다 더 많은 수를 표현할 수 있기 때문이다. 
     (double > float)
     타입을 변경해도 정보의 손실이 일어나지 않을때, 자동 형 변환이 일어난다.
    float a = 3.0;
     
     반대로 위의 예제는 오류가 발생한다. 상수 3.0은 상수이지만 double형이다. 이 값을 표현범위가 적은 float에 넣으려고 하기 때문에 오류가 발생하였다. 
    
     
     ※자동형변환의 원칙 : 표현범위가 좁은 데이터 타입에서 넓은 데이터 나입으로의 변환만 허용된다.
     
     ![](https://media.vlpt.us/images/enoch0403/post/9117832b-9f48-44f4-98c2-127ac037b9cf/image.png)
     
     위의 이미지는 자동 형 변환이 일어나는 규칙을 보여준다.
     byte타입은 short가 될 수 있지만 short는 byte 타입이 될 수 없다.
     long은 float가 될 수 있지만 float은 long이 될 수 없다.
     
     
     2. 명시적 형 변환
     
     자동 형 변환이 적용되지 않는 경우 수동으로 형 변환을 해야 한다.
     이를 명시적 형 변환이라고 한다.
     아래의 코드는 오류가 발생하는데. 자동 형 변환이 이루어지지 않기 때문이다.
     
    float a = 100.0;
    int b = 100.0F;
    
    위의 코드를 직접 수정하여 오류를 고쳐보면 아래와 같다.
    float a = (float)100.0;
    int b = (int)100.0F;