Integerクラスは、int型のラッパー(包み込む)クラスで、基本型に関する様々な機能を補完するクラス。
そもそもint型とは、基本型(プリミティブ)であり、javaが標準で用意している、8つの数値や文字列を格納する為のデータ型である。
データ型は、名前の通り、フィールド(データ)しか持っていない(メゾットを有しない)。フィールド(データ)とメゾット(処理機能)をもっているクラス型とは異なる。
javaではデータしか持ち合わせないデータ型を補完する為、メゾットを保有しているクラス型(参照)であるIntegerクラスが別で用意されている。
そもそも、プログラムとは、フィールド(データ)をメゾット(処理機能)によりフィールド(データ)を変化させる事が目的である。よって、データだけでは、どの様に変化させるのかがないので、プログラムとして完結しない。そこで数値を参照型(リファレンス)にし、どの様に処理するかを加えたものを別のクラス型で用意したものが、ラッパークラスでその1つがIntegerクラスある。
Integerクラスは、複数のクラスメゾット(対義語インスタンスメゾット)をもっている。
Integerクラスのnewによる宣言、初期化と代入(コンストラクタの呼び出し)は、推奨されていない。
Integer i;
i = new Integer(6);//コンパイル時に警告メッセージが出る。
:関連事項:
intも、newによる宣言、初期化と代入(コンストラクタの呼び出し)はしない。intはデータ基本型であり、上記でも解説している通り、フィールド(データ)しか持っておらず、メゾット(処理機能)は無い。よって、そもそもコンストラクタをもっていないので、newによる代入はできない(しない)ので直接代入する。
int num;
num = new int(10);//データ型にはコンストラクタが無いので呼び出せない。この記述ではコンパイルできない。
よって
int num;
num = 10;//直接代入
この様な記述になる。
【 仮定義 】
String str1 = "4597";
int num1 = 0;
int num2 = 3;
Q1
String型の文字列をint型の変数にして返す。
メゾットを記述し、mainクラスでメゾットを呼び出すコードを記述。
A1
ststic int parseInt(String str)
int num = Integer.parseInt(str1);
プリミティブ型を返す。
parseIntはIntegerクラスで、クラスメゾットと定義されているので、オブジェクトの作成は行わない。
『クラス名.メゾット名(引数)』
の様な記述になる。
クラスメゾット(関数)はクラス全体で扱うメゾットの事。クラスメンバ(変数)は、クラス全体で扱う変数の事。クラスメゾットは、インスタンスオブジェクトメンバ(変数)の作成を行わないので、コンストラクタも作成されない。※コンストラクタは、newによる宣言、初期化と代入によりインスタンスオブジェクトメンバの作成が行われないと呼び出しされない。戻り値を持っているので、int型へ代入まで行う。
この様な、メゾットを持つラッパークラスが用意されている事により、フィールドしか持っていないデータ型では行えなかった、型の変換等を行う事ができる様になっている。
Q2
String型の文字列をInteger型の変数で返す。
メゾットを記述し、呼び出し元でオブジェクトを作成するコードを記述。
A2
static Integer valueOf(String str)
Integer in = Integer.valueOf(str1);
ラッパークラスの初期化されたIntegerオブジェクトで返す。newによるインスタンスオブジェクトの作成を行わないので、戻り値を介して直接入力する。宣言、初期化、代入をする時はvalueOfを使用する。
Integerオブジェクトにするメリットの1つとしては、参照型になる事。