Java 03(자동 형변환)

Kang.__.Mingu·2024년 4월 24일
0

Java

목록 보기
5/108

자동 형변환

  • 자료형이 다른 값을 연산하기 위해 JVM(Java Virtual Machine : Java 프로그램 실행하기 위한 가상의 플렛폼)이 값의 자료형을 일시적으로 변환하여 사용하는 방법
  • 표현의 범위가 작은 자료형의 값을 큰 자료형의 값으로 형변환하여 연산 처리
System.out.println("결과 = " + (3 + 1.5));

// 3(int) + 1.5(double) > 3(double) + 1.5(double) > 4.5(double)

System.out.println("결과 = " + (95/10)); // 9
System.out.println("결과 = " + (95.0/10.0)); // 9.5
System.out.println("결과 = " + (95.0/10)); // 9.5
System.out.println("결과 = " + (95/10.)); // 9.5

강제 형변환

  • 개발자가 Cast 연산자를 사용하여 값을 원하는 자료형의 값으로 일시적으로 변환하여 사용하는 방법
  • Cast 연산자: (자료형)값
  • ex) (int) 10.0 > 10
int num = (int) 12.3
System.out.println("num = " + num); // num = 12

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

큰 정수값일 경우

  • 큰 정수값은 [ _ ] 기호를 사용하여 표현 가능
int num4 = 100_000_000, num5 = 30;

int num6 = num4 * num5; // => 에러남
  • 에러나는 이유
    정수값은 4byte(-2148483648~2148483647)로 표현되므로 연산 결과값이 4Byte의 표현의 범위를 벗어날 경우 잘못된 결과값(쓰레기값)이 발생되어 변수에 저장 - 실행오류

  • 해결 방법
    연산 결과없이 4Byte의 표현범위를 벗어날 경우 8Byte(LongType)으로 연산 처리되므로 피연산자를 강제 형변환하여 연산 처리 - 연산 결과값을 저장할 변수도 long 자료형으로 선언

long num6 = (long)num4 * num5;

System.out.println("num6 = " + num6);

소숫점 올림, 내림, 반올림

  • 변수에 저장된 실수값을 소수점 2번째 자리까지만 출력되도록 변환
double number = 1.23456789;
System.out.println("number(내림) = " + (int)(number * 100)/ 100.);
System.out.println("number(올림) = " + (int)(number * 100 + 0.9)/ 100.);
System.out.println("number(반올림) = " + (int)(number * 100 + 0.5)/ 100.);
profile
최선을 다해 꾸준히 노력하는 개발자 망고입니당 :D

0개의 댓글