概要
「Integerはint型のフィールドを1つだけ持つラッパークラスである」
ということが公式に書かれています。
つまりint型の値を持ち、様々なメソッドを備えたオブジェクト型であるということです。
実装を見てみると、確かにint型のフィールドがあります。
1 2 3 |
private final int value; |
これはfinalになっているので、Stringと同じく不変オブジェクトのようです。
初期化
初期化には3種類あります。
valueOfメソッド
1 2 3 |
Integer one = Integer.valueOf(1); |
公式で推奨されている方法です。
int型の代入(オートボクシング)
1 2 3 |
Integer ten = 10; |
int型をInteger型に詰める(box)のを自動化してくれる仕組みです。
これは、オブジェクト型であるInteger型にプリミティブ型であるint型をただ代入するだけで値を格納してくれます。
コンストラクタ
1 2 3 |
Integer handred = new Integer(100); |
new する方法です。
これはJava9では非推奨になっていますので、Java9以降ではvalueOfメソッドを使うようにしましょう。
⇒リンク先で「java.lang.Integer(int)」を参照して下さい。
よく使うメソッド
int型で取り出す
<intValueメソッド>
1 2 3 4 5 |
Integer one = Integer.valueOf(1); int oneOfInt = one.intValue(); System.out.println(oneOfInt); |
<実行結果>
1
<説明>
言うまでもなく、内部で保持しているint型の値を取得するメソッドです。
文字列(数字)を数値に変換する
<parseIntメソッド>
1 2 3 4 5 6 |
String oneOfStr = "1"; String notNumber = "a"; System.out.println(Integer.parseInt(oneOfStr)); System.out.println(Integer.parseInt(notNumber)); |
<実行結果>
1
Exception in thread "main" java.lang.NumberFormatException: For input string: "a"
(...出力情報は省略)
<説明>
文字列型である数字を数値(int型)に変換します。
ただし、数値型に変換できない文字列を指定した場合、NumberFormatExceptionがスローされます。
文字列として取得する
<toStringメソッド>
1 2 3 4 5 |
String oneOfStr = "1"; System.out.println(one.toString()); System.out.println(one.toString().getClass()); |
<実行結果>
1
class java.lang.String
<説明>
コンソールだと数値と文字列であることの区別がつかないので、getClassメソッドでオブジェクトのクラス名を表示させました。
String型であることが表示されているので、String型として取得できていることがわかります。
まとめ
- Integerは内部にint型の単一フィールドを持つラッパークラスである。
- 初期化はvalueOfメソッドが推奨されている。
- 文字列を数値に変換するには、parseIntメソッドを使用する。