1. 오버플로우 (Overflow)
허용된 범위 이상의 수의 값을 저장할 때 발생한다.
이 경우, 강제형변환을 시켜야 하는데 큰 값에서 작은 값의 자료형으로 옮겨져 가야 하기 때문에 데이터 손실 발생이 있다. 그렇기 때문에 식에서 반드시 변하는 값을 앞에 명시해 주어야 한다.
예)
public class Main {
public static void main(String[] args) {
// 더 큰 데이터 타입을 더 작은 데이터 타입으로 변환 (강제 형변환 필요)
double bigValue = 123.45;
int intValue = (int) bigValue;
System.out.println("intValue: " + intValue); // 출력 결과: 123
// 정수를 실수로 변환 (강제 형변환 필요 없음)
int smallValue = 5;
double doubleValue = smallValue; // 암시적 형변환 발생
System.out.println("doubleValue: " + doubleValue); // 출력 결과: 5.0
}
}
[ Chat GPT 예시 참조 ]
2. 언더플로우( Underflow)
허용된 범위 이하의 수의 값을 저장할때 발생한다.
이 경우, 작은 값에서 큰 값의 자료형으로 변환하기 때문에 자연스럽게 자동 형변환이 적용된다.
예)
public class Main {
public static void main(String[] args) {
byte minValue = Byte.MIN_VALUE; // byte 타입의 최솟값
System.out.println("minValue: " + minValue); // 출력 결과: -128
byte underflowValue = (byte) (minValue - 1); // 언더플로우 발생
System.out.println("underflowValue: " + underflowValue); // 출력 결과: 127
}
}
[ Chat GPT 예시 참조]
3. 형변환(casting)
값(data)의 자료형을 바꾸는 것이다. 이때, boolean은 제외된다. ( true/false만 되는 크기나 범위가 없는 데이터 유형이라서) 형변환의 종류는 앞서 나온 것처럼 강제형변환(= 명시적 형변환: Casting 또는 Narrowing )과 자동형변환(암시적 형변환: Implicit Casting 또는 Widening)이 있다.
두 유형의 형변환은 각각 데이터 손실의 위험성에 따라 사용되며 상황에 따라 이를 적절하게 처리해야 한다.
[사진 출처: www.pixabay.com / PDPics]
'프로그래밍 언어 > Java' 카테고리의 다른 글
배열(Array) (0) | 2024.06.25 |
---|---|
패키지(Package), 임포트(import) (0) | 2024.06.25 |
메소드(Method) (0) | 2024.06.25 |
연산자(Operator) 종류와 연산자의 우선순위 (0) | 2024.06.25 |
변수(Variable), 상수(Constant) (0) | 2024.06.25 |