Java 형 변환 연습하기

코드부터 작성하였다.

Java 형 변환 연습1

double doubleValue;

doubleValue = 5.0 / 2.0;
System.out.println("doubleValue = " + doubleValue);

3번 줄 코드는 5.0 / 2.0 리터럴 값부터 먼저 계산하게 된다. 리터럴은 double형으로 인식되어 2.5 값으로 계산되고 doubleValue 으로 할당하게 된다.

출력 값:

doubleValue = 2.5

Java 형 변환 연습2

double doubleValue;

doubleValue = 5 / 2;
System.out.println("doubleValue = " + doubleValue);

3번 줄 5 / 2 살펴본다. 5 / 2 리터럴은 int형으로 인식되고, int 형의 결과 결과값 소숫점을 없애고 값을 doubleValue로 할당하였다.
이 변수는 double 타입이므로 실수형 2.0 값으로 반환된다.

doubleValue 대입 과정

  1. double 타입의 doubleValue 선언
  2. doubleValue = 5 / 2; 대입(=) 전에 5 / 2 우선 계산
    1. int / int = int 형이므로 int 형태로 소숫점을 없애고 나누기 계산
  3. 대입하는 변수가 큰 범위이므로 (double) 타입으로 형 변환.
    1. 계산된 값은 2.0이 됨
  4. 값 2.0를 doubleValue 로 할당

출력 값:

doubleValue = 2.0

Java 형 변환 연습3

double doubleValue;

doubleValue = 5.0 / 2;
System.out.println("doubleValue = " + doubleValue);

3번 줄 코드 5.0 / 2 리터럴이 double 형과 int 형이 섞여 있다. 이 경우 리터럴 2값은 double 자동 형 변환된다.

double / double 이 되었으므로 실수까지 계산되어 2.5 이 된다.

출력 값:

doubleValue = 2.5

Java 형 변환 연습3

double doubleValue;

doubleValue = (double) 5 / 2;
System.out.println("doubleValue = " + doubleValue);

대입 전 (double) 5 / 2 으로 명시적 형변환을 하였다.

출력 값:

doubleValue = 2.5

정리

할당 전 타입 따라 계산이 다르게 나올 수 있으므로 주의해야 한다.

  • int * int = int 형으로 할당
  • double * int = double 형으로 할당
  • 수식(* / % + -)은 마찬가지로 큰 범위의 타입으로 할당하게 된다.