java_형변환

sy.mo·2024년 8월 24일

작은 범위를 가진 타입에서 큰 범위를 가진 타입에 값을 넣을 수 있습니다.

int -> long -> double

큰 범위에서 작은 범위는 다음과 같은 문제가 발생합니다.

1) 소수점 버림
2) 오버플로우 (오버플로우가 발생하지 않도록 하는것이 중요합니다.)
오버플로우 발생은 변수에 값을 대입할 때 변수에 지정한 타입의 허용범위보다 클 때 발생합니다. 오버플로우가 발생 했을때 상위 타입으로 변환을 함으로 해결합니다.

형변환 - 명시적 형변환

큰 범위의 타입을 가진 변수에서 작은 범위의 타입을 가진 변수에 대입은
명시적 형변환이 필요합니다.

... 큰 범위에서 작은 범위로 대입은 언제 하나요?
// 소수점만 버리고 정수만 보고 싶을때
// 대략적 결과만 보고싶을때 데이터 타입을 강제로 변경할 수 있습니다.

예시 ) double -> int

double doubleValue = 1.5;
int intValue = 0;

// intValue = doubleValue; 컴파일 오류발생

intValue = (int) doubleValue; // 형변환
System.out.println(intValue); // 1 출력

// + int 타입 변수에 double 타입 변수로 형변환을 한다고 하여서
//   double 타입 변수안의 값이 변경되는 것은 아니다.
//   변수의 값은 대입연산자 = 를 사용해서 직접 대입할 때만 변경된다.

자바에서 계산

  1. 같은 타입끼리의 계산은 같은 타입의 결과를 낸다.
    ex) int + int = int
    int k = 3 / 2; 
    int k = 1;
  1. 서로 다른 타입의 계산은 큰 범위로 자동 형변환이 일어난다.
    ex) int + long -> long + long으로 형변환
    double j = 3 / 2;
    double j = 1;
    double j = 1 (double) 1;
    double j = 1.0
profile
Hello Velog

0개의 댓글