概要
数値表現可能なプリミティブ型の最大値・最小値は、それぞれのラッパークラスの定数として定義されている。
WrapperClass.MAX_VALUE
WrapperClass.MIN_VALUE
整数型、実数型、文字型で、それぞれの意味が異なる。
整数型の最大値・最小値
整数型の最大値・最小値は、それぞれのビット長で表現可能な符号付整数の最大値(正数)、最小値(負数)。
byte型
1 2 |
System.out.println(Byte.MAX_VALUE); // 127 System.out.println(Byte.MIN_VALUE); // -128 |
short型
1 2 |
System.out.println(Short.MAX_VALUE); // 32767 System.out.println(Short.MIN_VALUE); // -32768 |
int型
1 2 |
System.out.println(Integer.MAX_VALUE); // 2147483647 System.out.println(Integer.MIN_VALUE); // -2147483648 |
long型
1 2 |
System.out.println(Long.MAX_VALUE); // 9223372036854775807 System.out.println(Long.MIN_VALUE); // -9223372036854775808 |
整数型のオバーフロー/アンダーフロー
整数型の最大値を超える演算や最小値を下回る演算をすると、その方の範囲内のビットパターンで表現される値になる。
1 2 3 4 |
int iMax = Integer.MAX_VALUE; System.out.println(iMax + 1); // -2147483648 int iMin = Integer.MIN_VALUE; System.out.println(iMin - 1); // 2147483647 |
実数型の最大値・最小値
実数型の最大値・最小値は整数型と異なり、次の値。
- 最大値
- 正の数で表現できる最大の数
- 最小値
- 正の数で表現できる絶対値が最も小さい数
したがって、負の領域で表現可能な最小値は最大値のマイナス、負の領域で表現可能な絶対値が最小の数は最小値のマイナスになる。
float型
1 2 |
System.out.println(Float.MAX_VALUE); // 3.4028235E38 System.out.println(Float.MIN_VALUE); // 1.4E-45 |
double型
1 2 |
System.out.println(Double.MAX_VALUE); // 1.7976931348623157E308 System.out.println(Double.MIN_VALUE); // 4.9E-324 |
実数型のオーバーフロー/アンダーフロー
実数型の最大値を超える演算をするとInfinity
または-Infinity
になる。
1 2 3 4 |
double dMaxP = Double.MAX_VALUE; System.out.println(dMaxP * 2); // Infinity double dMaxN = -Double.MAX_VALUE; System.out.println(dMaxN * 2); // -Infinity |
実数型の最小値の絶対値を下回る計算をすると、0.0または−0.0になる。
1 2 3 4 |
double dMinP = Double.MIN_VALUE; System.out.println(dMinP / 2); // 0.0 double dMinN = -Double.MIN_VALUE; System.out.println(dMinN / 2); // -0.0 |
文字型の最大値・最小値
char型
char
型の最小値は文字コード0の文字、最大値は文字コード65535の文字。
1 2 |
System.out.println((int)Character.MAX_VALUE); // 65535 System.out.println((int)Character.MIN_VALUE); // 0 |
文字型のオーバーフロー/アンダーフロー
char
型の最大値を超える演算や最小値を下回る演算をすると、それで表現可能な整数型に変換される。
1 2 3 4 |
char cMax = Character.MAX_VALUE; System.out.println(cMax + 1); // 65536 char cMin = Character.MIN_VALUE; System.out.println(cMin - 1); // -1 |