[자바(Java)] 형변환 (Type Cast)

방용환·2023년 3월 30일
0
post-thumbnail

1. 자료 형변환 (Type Cast)

  • 자료 형변환 : 값의 자료형을 일시적으로 변환하여 사용하는 방법이다.
    강제 형변환(프로그래머)

1. 자동 형변환 (Promotion)

  • 자료형이 다른 값을 연산하기 위해 JVM이 자료형을 일시적으로 자동 변환해준다.
  • 표현의 범위가 작은 자료형의 값이 큰 자료형의 값으로 형변환되어 연산 처리된다.
  • byte, short, int는 int로 연산된다.
  • byte >> short >> char >> int >> long >> float >> double
System.out.println("결과 = " + (95 / 10));
// 결과 = 9, int/int >> int
System.out.println("결과 = " + (95.0 / 10.0));
// 결과 = 9.5, double/double >> double
System.out.println("결과 = " + (95.0 / 10));
// 결과 = 9.5, double/int >> double/double(자동 형변환) >> double
System.out.println("결과 = " + (95 / 10.));
// 결과 = 9.5, int/double >> double(자동 형변환)/double >> double

2. 강제 형변환 (Casting)

  • 프로그래머가 Cast 연산자를 사용하여 원하는 자료형의 값으로 일시적으로 변환하여 명령을 작성하는 방법이다.
  • 방법 : (자료형) 값
int num = (int) 12.3;
System.out.println("num = " + num);
// num = 12, (int)12.3 >> 12

double num3 = (double) num1 / num2;
System.out.println("num3 = " + num3);
// num3 = 9.5

2. 주저리...

  • 큰 정수값은 _ 기호를 사용하여 표현 가능
System.out.println("num4 = " + 100_000_000);
// 100000000
  • 문제점 - 정수값에 대한 연산 결과값이 4Byte로 표현 가능한 범위를 벗어난 경우 쓰레기값 발생
    => 정수값에 대한 연산 결과값이 8Byte(LongType)로 표현될 수 있도록 강제 형변환

  • 소숫점 2자리 위치까지만 출력되도록 명령 작성

System.out.println("number(내림) = " + (int) (number * 100) / 100.0);
// number(내림) = 1.23
System.out.println("number(반올림) = " + (int) (number * 100 + 0.5) / 100.0);
// number(반올림) = 1.23
System.out.println("number(올림) = " + (int) (number * 100 + 0.9) / 100.0);
// number(올림) = 1.24	

0개의 댓글