【Java SE 11 Silver対策】ラッパークラスとボクシングについて
ちょっと間が空きましたが、気にしません。継続第一です。
今回はラッパークラスについて
業務の時はほとんど意識しませんでしたねー
よーするに全然分かっておりません、はい。
Silverの試験ではきっちり出てくるので調べてみました。ちなみにBronzeの試験はでは出てきません。(たしか)
基本データ型のそれぞれにラッパークラスが用意されています。
ほとんどが頭文字を大文字にするだけですが、intとcharだけちょっと違うので注意です。
boolean → Boolean
char → Character ※注意
byte → Byte
short → Short
int → Integer ※注意
long → Long
float → Float
double → Double
で・・・ラッパークラスってなんなの?って話ですが
例えばInteger型の場合は、int型の値を持ち、しかも値を操作するメソッドも持っている「オブジェクト」のようなイメージ・・・らしいです。
そういえば、昔、先輩にこんなことこんなこと言われました。
・用がなければ基本型で。必要があるならラッパークラスを使う。
・ラッパークラスはnullが入るから気を付けて。
この話を聞いて、(当時はチンプンカンプンだったので、)基本型だけ使ってコード書いてるつもりでした。
実際はオートボクシングの機能つかってラッパークラスもガンガン使っていたんですけどねーまぁいいや。
調査は以上です。Silver合格を目標としますので、ここまで良いかな。あと、ラッパークラスの具体的なメソッドについて、記載しません。多分上記の話を覚えておけば、黒本でラッパークラスが出てきても、「あーはいはい、そういうのあんのねー。」で済むと思うので。
そして、もう一つ「ボクシング」について
こちらも黒本でチラホラ見かけた気がするので、一応
ラッパークラスと基本形の変換を自動的におこなってくれるのが「ボクシング変換」
int → Integer とInteger → int の両方の例を以下に記載。ついでにボクシングを使わない方法も記載
public class Main {
public static void main(String[] args) throws Exception {
System.out.println("int → Integer");
int primitiveNum = 1;
Integer a = primitiveNum; //ボクシング変換
Integer b = Integer.valueOf(primitiveNum); //メソッドを使う
Integer c = new Integer(primitiveNum); // コンストラクタを使う
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println("Integer → int");
Integer lapperNum = 2;
int d = lapperNum; //アンボクシング変換
int e = lapperNum.intValue(); //メソッドを使う
System.out.println(d);
System.out.println(e);
}
}
うーん・・・とりあえず、『「基本型」←→「ラッパークラス」の変換を自動的に行ってくれる機能』という認識でよいかな・・・?