Javaに関する様々な情報をご紹介します。

1数値クラスの基本

Javaに関する様々な情報をご紹介します。

数値クラスの基本

このページでは数データを扱う様々な数値クラスの紹介を行います。

数値クラスの種類

Javaでは数値クラスとして、Numberクラスをスーパークラスとして、以下の8つのサブクラスを持っています。BigIntegerクラスは変更不可能な任意精度(すべての精度の数値)の整数を保持できるクラスです。BigDecimalクラスは変更不可能な任意精度(すべての精度の数値)の符号付10進数を保持できるクラスです。

Byte Short Integer Long Float Double BigInteger BigDecimal

なぜ基本型としてbyte型、double型などがあるのに数値クラス(Byteクラス、Doubleクラス)があるのかといった点については、クラスの中には参照型のデータしか扱えないものなどもあります。そういったクラスに対しては、基本型の変数に値を代入して使用するのではなく、数値クラスのオブジェクトに値を代入する、もしくは基本型の変数を数値クラスのオブジェクトに変換して使用するといった形をとります。

また数値クラスには保有するデータを変換する・比較するなどの多くのメソッドが用意されています。それらのメソッドを使用することにより、より効率的なプログラムを記述することができます。

共通のメソッド

数値クラスで共通に用意されている主なメソッドとして、以下のものがあります。

戻り型 メソッド 説明
byte
short
int
long
float
double
byteValue( )
shortValue( )
intValue( )
longValue( )
floatValue( )
doubleValue( )
呼び出すオブジェクトの値を基本型のデータ値に変換します(Integerオブジェクトの値をbyte型の値に変換など。)。
int compareTo(Object) 呼び出すオブジェクトと引数のオブジェクトとの比較を行います。両者のデータ型は同じでなければなりません。両者の値が同じ場合は0を返します。引数のオブジェクトの方が大きい場合は正の整数を、小さい場合は負の整数を返します。
boolean equals(Object) 呼び出すオブジェクトと引数のオブジェクトとの値が等しいか比較を行います。等しい場合はtrueを返します。

【例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. (1)初期値20のIntegerオブジェクトinteger1の生成を行います。
  2. (2)初期値20のIntegerオブジェクトinteger2の生成を行います。
  3. (3)初期値20のLongオブジェクトlong1の生成を行います。
  4. (4)equalsメソッドを使用し、integer1オブジェクトとinteger2オブジェクトの比較を行います。値が等しいため、Equalメッセージの表示を行います。
  5. (5)equalsメソッドを使用し、integer1オブジェクトとlong1オブジェクトの比較を行います。値は等しいが参照型が異なるため、Differentメッセージの表示を行います。

実行結果1

D:\JAVA>javac ExNumber.java

D:\JAVA>java ExNumber
Equal
Different

D:\JAVA>

共通の定数

数値クラスで共通に用意されている主な定数として、以下のものがあります

Byte、Short、Integer、Long、Float、Doubleで用意されている主な定数

戻り型 定数 説明
static byte
static short
static int
static long
static float
static double
MAX_VALUE 各オブジェクトの保持する設定可能な最大値を表します。
static byte
static short
static int
static long
static float
static double
MIN_VALUE 各オブジェクトの保持する設定可能な最小値を表します。

Float、Doubleで用意されている主な定数

戻り型 定数 説明
static float
static double
NEGATIVE_INFINITY 各オブジェクトの負の無限大値を表します。
static float
static double
POSITIVE_INFINITY 各オブジェクトの正の無限大値を表します。

【例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

  1. (1)Byteオブジェクトの最大値の表示を行います。
  2. (2)Shortオブジェクトの最大値の表示を行います。
  3. (3)Integerオブジェクトの最大値の表示を行います。
  4. (4)Longオブジェクトの最大値の表示を行います。
  5. (5)Floatオブジェクトの最大値の表示を行います。
  6. (6)Doubleオブジェクトの最大値の表示を行います。
  7. (7)Floatオブジェクトの正の無限大値の表示を行います。
  8. (8)Floatオブジェクトの負の無限大値の表示を行います。

実行結果2

D:\JAVA>javac ExNumber2.java

D:\JAVA>java ExNumber2
127
32767
2147483647
9223372036854775807
3.4028235E38
1.7976931348623157E308

Infinity
-Infinity

D:\JAVA>

1数値クラスの基本