リュックに何いれる?

一人暮らし・itエンジニア・読書

【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);
        
    }
}

うーん・・・とりあえず、『「基本型」←→「ラッパークラス」の変換を自動的に行ってくれる機能』という認識でよいかな・・・?