08_타입의 변환

Jiyoon.lee·2023년 11월 18일
0

Java_inflearn

목록 보기
8/25

1. 수학시간에 배웠던 내용을 기억해보자.

  • 실수는 정수를 포함한다.
  • 실수는 정수보다 큰 집함임을 기억해둘 것

2. double형 타입은 정수값이 잘 대입된다.

  • 다음은 가능하다.
  • 이를 묵시적 타입 변환(자동 타입 변환, implicit conversion)이라고 한다.
double d1 = 50;
double d2 = 500L;
  • int형 리터럴 50, long형 리터럴 500L아 모두 d1, d2에 저장된다.

3. int형 타입에 실수를 대입하면 오류가 발생한다.

  • 실수는 정수를 포함하지만, 정수는 실수를 표함할 수 없기 때문에 아래의 코드는 컴파일 오류가 발생한다.
int i1 = 50.0;
int i2 = 25,4f;

*숫자의 크기가 중요하지 않고 50.0이 실수라는게 중요함

4. 실수 값을 정수에 저장하려면 형 변환을 해야한다.

  • 실수 값을 정수 타입의 변수에 저장하려면 정수 타입으로 형변환 해야한다. 변환하고자 하는 값 앞에 int를 붙인다.
  • 주의해야할 점은 소수점 이하 부분은 잘린다.
  • 이를 명시적 타입 변환(강제 타입 변환, explicit conversion)이라고 한다.
int i1 = (int)50.0;
int i2 = (int)25.6f;

*실수값 앞에 (int)를 붙여주는 것은 프로그래머가 책임질테니 강제로 int타입으로 변환하라는 뜻

5. 크기가 큰 타입은 작은 타입을 저장할 수 있다.

  • long 타입의 변수는 byte, short, int 타입의 값을 저장할 수 있다.
  • int 타입의 변수는 byte, short 타입의 값을 저장할 수 있다.
  • short 타입의 변수는 byte 타입의 값을 저장할 수 있다.
short s = 5;
int i = s;
long x = i;

System.out.println(i);
System.out.println(x);
  • 오류가 발생하지 않고 잘 실행된다.

6. 예제 : 형변환 시 주의할 점

  • 크기가 큰 타입을 작은 타입에 저장할 때는 오버플로우를 조심해야 한다.
public class PrimitiveCastExam {
    public static void main(String[] args) {
        long x2 = 50;
        int i2 = (int)x2;
        System.out.println(x2);
        System.out.println(i2);

        long x3 = Long.MAX_VALUE;
        int i3 = (int)x3;
        System.out.println(x3);
        System.out.println(i3);
    }
}
  • 실행 결과 :
50
50
9223372036854775807
-1
  1. 구글에서 JAVA에서 강제 형변환 시 주의할 점이라고 검색해보자.

0개의 댓글