JAVA/JAVA 기초

Java 기초 - Overflow

꿀표 2020. 5. 28. 19:24

 

package com.kh.variable;

public class D_Overflow {
	
	public void overflow() {
		// byte 자료형의 변수 저장 가능한 값 범위 : -128 ~ 127 총 256
		
		//byte bNum = 128; // 코딩하는 동안 bin이라는 폴더에 컴파일이 계속 진행되고 있는데 빨간줄이 뜬다는 것은 '컴파일 오류' 라고 부른다.
		
		byte bNum = 127; // -128 -127 -126 ..... 126 127 -128 : overflow  
		
		bNum++; // bNum에 담긴 값에 +1 증가 시키겠다. -> -128이 나오는 이유는 위처럼 연결되어 있는 구조이기 때문에 (overflow)
		bNum++;
		System.out.println("bNum : " + bNum);
		
		// int형 저장 가능 값 범위 : -21억xxx  ~ 21억xxx
		
		int num1 = 1000000; //100만
		int num2 = 700000; //70만

		//int result = num1 * num2;
		
		//long result = num1 * num2; // 아싸리 곱셉연산 하는 순간 int형 값이기 때문에 이미 overflow가 발생
		long result = (long)num1 * /*(long)*/num2; //강제형변환이 연산보다 우선순위. 따라서 long형으로 변환됨
		
		System.out.println("result : " + result);
		
		result = 10;
		
	}

}

Point

Overflow : 변수 타입의 저장 범위를 넘어서는 것.