https://pixabay.com/
오버플로우(overflow)
- 500ml 물컵에 물을 501ml이상 담으면 물이 컵에서 흘러 넘치게 되는데 이를 오버플로우라고 한다.
- 자료형에서 확인 가능하듯 각각의 정해놓은 byte와 값의 허용범위가 있다. 이를 넘게 되면 정해놓은 메모리영역을 넘어 다른 메모리공간을 침범하기 때문에 에러가 발생한다.
- 오버플로우 에러를 악용하여 해킹에서 사용된다.
- 자바에서는 최소값 - 1 = 최대값, 최대값 + 1 = 최소값이 나온다.
허용범위 확인
- MIN_VALUE, MAX_VALUE는 최소 허용범위와 최대 허용범위를 알려주는 메소드다.
System.out.println("char: " + (int)Character.MIN_VALUE + " ~ " + (int)Character.MAX_VALUE);
System.out.println("Byte: " + Byte.MIN_VALUE + " ~ " + Byte.MAX_VALUE);
System.out.println("Short: " + Short.MIN_VALUE + " ~ " + Short.MAX_VALUE);
System.out.println("Int: " + Integer.MIN_VALUE + " ~ " + Integer.MAX_VALUE);
System.out.println("Long: " + Long.MIN_VALUE + " ~ " + Long.MAX_VALUE);
System.out.println("Float: " + Float.MIN_VALUE + " ~ " + Float.MAX_VALUE);
System.out.println("Double: " + Double.MIN_VALUE + " ~ " + Double.MAX_VALUE);
결과값
char: 0 ~ 65535
Byte: -128 ~ 127
Short: -32768 ~ 32767
Int: -2147483648 ~ 2147483647
Long: -9223372036854775808 ~ 9223372036854775807
Float: 1.4E-45 ~ 3.4028235E38
Double: 4.9E-324 ~ 1.7976931348623157E308