본문 바로가기
Backend/Java

Java - 형변환(Casting) 및 오버플로우(overflow), 언더플로우(underflow)

by 퐁고 2023. 2. 12.
반응형

형 변환(Casting)이란?

  • 값의 타입(data type)를 다른 타입으로 변환하는 것
  • 자동 형변환(묵시적)
    • 작은 타입이 큰 타입에 저장되는 경우 byte → int
  • 강제 형변환(명시적)
    • 큰 타입이 작은 타입에 저장되는 경우 int → byte 손실 발생

문자열 타입을 기본타입으로 변환

  • Integer.parseInt();
  • Double.parseDouble(); 등등..

기본 타입을 문자열로 변환

  • String.valueof();
  • Integer.toString();

 

오버플로우

  • 타입이 허용하는 최대값을 벗어나는 것

언더플로우

  • 타입이 허용하는 최소값을 벗어나는 것

오버플로우, 언더플로우가 실행되면 실행 에러가 되지않고 해당 정수 타입의 최소값 혹은 최대값으로 되돌아간다.

// 오버플로우
byte valueOver = 127; (1byte = 8bit, -2의 8승 <= 값 <= 2의 8승 - 1)
valueOver++;
System.out.println(valueOver);

// 언더플로우
byte valueLower = -128;
valueLower--;
System.out.println(valueLower);

위에 오버플로우가 된 valueOver의 값은 byte의 최소값인 -128,

언더플로우가 된 valueLower의 값은 byte의 최대값인 127이 출력된다.

즉, 다른 형인 short, int등 모두 똑같다. 고로 연산 과정에서 오버플로우 혹은 언더플로우가 일어 날 것 같다면 더 큰 타입으로 연산을 하도록 해야한다.

'Backend > Java' 카테고리의 다른 글

Java - package 패키지  (0) 2023.02.19
Java - 문자열 String  (0) 2023.02.13
Java - 2진수, 10진수, 8진수, 16진수  (0) 2023.02.12
Java - 형식 문자열 (printf)  (0) 2023.02.11
Java - 소스파일을 터미널에서 컴파일하기  (0) 2023.02.11

댓글