Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 > Java基本 > 数データ −1.数値クラスの基本
更新日:2005/9/22
数データ−1.数値クラスの基本
このページでは数データを扱う様々な数値クラスの紹介を行います。
数値クラスの種類

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). 初期値20のIntegerオブジェクトinteger1の生成を行います。
(2). 初期値20のIntegerオブジェクトinteger2の生成を行います。
(3). 初期値20のLongオブジェクトlong1の生成を行います。
(4). equalsメソッドを使用し、integer1オブジェクトとinteger2オブジェクトの比較を行います。値が等しいため、Equalメッセージの表示を行います。
(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). Byteオブジェクトの最大値の表示を行います。
(2). Shortオブジェクトの最大値の表示を行います。
(3). Integerオブジェクトの最大値の表示を行います。
(4). Longオブジェクトの最大値の表示を行います。
(5). Floatオブジェクトの最大値の表示を行います。
(6). Doubleオブジェクトの最大値の表示を行います。
(7). Floatオブジェクトの正の無限大値の表示を行います。
(8). Floatオブジェクトの負の無限大値の表示を行います。

【実行結果2】

D:\JAVA>javac ExNumber2.java

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

Infinity
-Infinity

D:\JAVA>



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道