今回はラッパークラスについて、普通の変数型との違いや、byte
・short
・int
・long型
(基本データ型)の最小値と最大値についてMAX_VALUE
・MIN_VALUE
から求めてみます。
変数の型とラッパークラス
まず、変数と型(基本データ型・参照型)の違いについてまとめてみます。
変数とは、データの内容を記憶する役割を持ちます。変数には色々な型が存在しており、その型の種類を大別すると基本データ型(プリミティブ型)と参照型(リファレンス型)に分かれます。
基本データ型は数字や文字の値を直接保持していますが、参照型は直接データを保持しておらず、参照先を参照することでデータを取り扱っています。
ここで、基本データ型はメソッドを持っていないという特徴があります。
参照型はインスタンス宣言によりインスタンス化することで、メソッドを呼び出してデータを処理することができるのです(オブジェクトとして扱うことができる)。
そこで、基本データ型でもオブジェクトとして扱うことができるように用意されたものがラッパークラスという訳です。ここでラッパーとはwrapper(覆うもの)を意味しています。
ラッパークラスの一覧
ラッパークラスは基本データ型をオブジェクトとして扱うためのクラスです。ラッパークラスの一覧を表でまとめてみます。
基本データ型 | ラッパークラス |
---|---|
boolean | Boolean |
byte | Byte |
char | Character |
int | Integer |
long | Long |
short | Short |
double | Double |
float | Float |
ラッパークラスの使い方
例として、Integerクラス
の使い方を紹介します。下に記述例を示します。
// int型の宣言
int i = 10;
// ラッパークラスのインスタンス化
Integer integer1 = new Integer(i);
// 簡略化(オートボクシング)
Integer integer2 = i;
基本データ型からラッパークラスへの自動変換をオートボクシング(Autoboxing)といいます。反対にラッパークラスから基本データ型への自動変換をアンボクシング(Unboxing)といいます。
その他のクラスも上と同様に扱えます。
ラッパークラスを使うメリット
ラッパークラスで実現できることにメソッドを使えることが挙げられます。
例えば、数値を文字列に変換するtoStringメソッド
は、int型
の変数では使えませんがInteger型
で使用することができます。
整数型の最小値・最大値
MAX_VALUE
とMIN_VALUE
で変数の最大値と最小値を取得することができます。例としてMAX_VALUE
の記述例を示します。
// MAX_VALUEの記述例(int型)
Integer.MAX_VALUE;
それぞれのクラスの最大値・最小値を以下に示します。
基本データ型 | ラッパークラス | 最大値 | 最小値 |
---|---|---|---|
byte | Byte | 127 | -128 |
short | Short | 32767 | -32768 |
int | Integer | 2147483647 | -2147483648 |
long | Long | 9223372036854775807 | -9223372036854775808 |
byte型
はバイナリデータ(0と1で表現されているデータ)を扱うための型なので、整数を扱う場合はshort
・int
・long型
を使いましょう。
また、最大値・最小値を超えるとオーバーフロー(桁あふれ)が発生し、正負が反転した最大値になります。例えばint型
では下の様になります。
/* int型のオーバーフロー */
int max = 2147483647 + 1 // -2147483648
int min = -2147483648 - 1 // 2147483647
MAX_VALUEとMIN_VALUEの使用例
MAX_VALUE
とMIN_VALUE
の使用例をサンプルコードで紹介します。まずサンプルコードを下に示します。
- サンプルコード
public class ValueTest {
public static void main(String[] args) {
// byteの最大値と最小値を出力する
System.out.println("byteの最大値:" + Byte.MAX_VALUE);
System.out.println("byteの最小値:" + Byte.MIN_VALUE);
// shortの最大値と最小値を出力する
System.out.println("shortの最大値:" + Short.MAX_VALUE);
System.out.println("shortの最小値:" + Short.MIN_VALUE);
// intの最大値と最小値を出力する
System.out.println("intの最小値:" + Integer.MAX_VALUE);
System.out.println("intの最大値:" + Integer.MIN_VALUE);
// longの最大値と最小値を出力する
System.out.println("byteの最小値:" + Long.MAX_VALUE);
System.out.println("byteの最大値:" + Long.MIN_VALUE);
}
}
- 出力結果
byteの最大値:127
byteの最小値:-128
shortの最大値:32767
shortの最小値:-32768
intの最小値:2147483647
intの最大値:-2147483648
byteの最小値:9223372036854775807
byteの最大値:-9223372036854775808
それぞれの整数型の最大値と最小値が出力されました。
今回はラッパークラスと整数型の最小値・最大値ついてまとめてみました。以上で記事を終わりにします。