Javaでは数値クラスとして、Numberクラスをスーパークラスとして、以下の8つのサブクラスを持っています。BigIntegerクラスは変更不可能な任意精度(すべての精度の数値)の整数を保持できるクラスです。BigDecimalクラスは変更不可能な任意精度(すべての精度の数値)の符号付10進数を保持できるクラスです。 Byte、Short、Integer、Long、Float、Double、BigInteger、BigDecimal なぜ基本型としてbyte型、double型などがあるのに数値クラス(Byteクラス、Doubleクラス)があるのかといった点については、クラスの中にはオブジェクト型のデータしか扱えないものなどもあります。そういったクラスに対しては、基本型の変数に値を代入して使用するのではなく、数値クラスのオブジェクトに値を代入する、もしくは基本型の変数を数値クラスのオブジェクトに変換して使用するといった形をとります。 また数値クラスには保有するデータを変換する・比較するなどの多くのメソッドが用意されています。それらのメソッドを使用することにより、より効率的なプログラムを記述することができます。
数値クラスで共通に用意されている主なメソッドとして、以下のものがあります。
【例1】equalメソッドを使用し、Integerオブジェクトの値とLongオブジェクトの値の比較を行いっています。
public class ExNumber { public static void main(String[] args) { Integer integer1 = new Integer(20); //(1) Integer integer2 = new Integer(20); //(2) Long long1 = new Long(20); //(3) System.out.println((integer1.equals(integer2) ? "Equal" : "Different")); //(4) System.out.println((integer1.equals(long1) ? "Equal" : "Different")); //(5) } }
【解説1】
【実行結果1】
数値クラスで共通に用意されている主な定数として、以下のものがあります。
【Byte、Short、Integer、Long、Float、Doubleで用意されている主な定数】
【Float、Doubleで用意されている主な定数】
【例2】各オブジェクトに用意されている定数の表示を行います。
public class ExNumber2 { public static void main(String[] args) { System.out.println(Byte.MAX_VALUE); //(1) System.out.println(Short.MAX_VALUE); //(2) System.out.println(Integer.MAX_VALUE); //(3) System.out.println(Long.MAX_VALUE); //(4) System.out.println(Float.MAX_VALUE); //(5) System.out.println(Double.MAX_VALUE); //(6) System.out.println(""); System.out.println(Float.POSITIVE_INFINITY); //(7) System.out.println(Float.NEGATIVE_INFINITY); //(8) } }
【解説2】
【実行結果2】