Wrapper、Enumクラス


Rapperクラス(Wrapperクラス)


元のタイプの値からメソッドを呼び出す必要がある場合や、オブジェクトタイプの引数が必要な場合がありますが、元の値をオブジェクトに変換する必要があります(たとえば、元の値を元の値に入れた場合).
このように元のタイプの値をオブジェクトとしてパッケージするクラスをRapperクラスと呼ぶ.
すべてのRapperクラスはjavaです.ランペッチにいます.

Rapperクラスリスト


基本タイプ
エンベロープクラス
byte
Byte
short
Short
int
Integer
long
Long
float
Float
double
Double
char
Character
boolean
Boolean

ふへんせい


Rapperクラスは演算用に定義されたクラスではないので、インスタンスに格納されている値は変更できません.

に服を着せる


元の値をRapperクラスインスタンスに変換するプロセスをエッチングと呼び,逆のプロセスをエッチングと呼ぶ.
Integer num = new Integer(17); // 박싱
int n = num.intValue();        // 언박싱
System.out.println(n);

自動梱包、自動アンインストール


JDK 1.5からサポートされている機能は、必要に応じて裁縫や着脱を自動的に処理する機能です.
Character ch = 'X'; // Character ch = new Character('X'); : 오토박싱
char c = ch;        // char c = ch.charValue();           : 오토언박싱
System.out.println(c);

インスタンス間の比較


予想される結果を得るには、演算子"="ではなくequalsメソッドを使用する必要があります.
public class Wrapper03 {
    public static void main(String[] args) {
        Integer num1 = new Integer(10);
        Integer num2 = new Integer(20);
        Integer num3 = new Integer(10);

        System.out.println(num1 < num2);       // true
        System.out.println(num1 == num3);      // false
        System.out.println(num1.equals(num3)); // true

    }
}

列挙タイプ


JDK 1.5からサポートされる構文は、enumキーワードで宣言されます.

長所

  • 列挙体を比較する場合は、値だけでなくタイプもチェックします.
  • 列挙体の定数値を再定義しても、再コンパイルする必要はありません.
  • 宣言と使用


    enumキーワードを使用して宣言します.
    列挙名{定数1名,定数2名,...}
    enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
    (列挙名).定数として使用します.
    Rainbow.RED

    定数値の設定


    デフォルトでは0から1ずつ増加するように設定されています.
    ユーザーが不規則な値を定数に設定したい場合は、定数名の横にカッコを付け、中に値を追加できます.ただし、この場合は、不規則な値を設定するためのフィールドとメソッドを別途追加する必要があります.
    enum Rainbow {
        RED(3), ORANGE(10), YELLOW(21), GREEN(5), BLUE(1), 
        INDIGO(-1), VIOLET(-11);
    
        private final int value;
        Rainbow(int value) { this.value = value; }
        public int getValue() { return value; }
    }

    Enumクラス


    java.lang packageのクラス、すべての列挙体の祖先クラス.

    values()


    列挙体のすべての定数を格納する配列を生成し、返します.
    enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
    
    public class Enum01 {
        public static void main(String[] args) {
            Rainbow[] arr = Rainbow.values();
            
            for (Rainbow rb : arr) {
                System.out.println(rb); // 상수 이름들 출력
            }
        }
    }

    valueOf()


    渡された文字列と同じ名前の列挙体の定数を返します.
    enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
    
    public class Enum02 {
        public static void main(String[] args) {
            Rainbow rb = Rainbow.valueOf("GREEN");
            System.out.println(rb); // GREEN
        }
    }

    ordinal()


    列挙体定数定義の順序(0から)を返します.
    enum Rainbow {
        RED(3), ORANGE(10), YELLOW(21), GREEN(5), BLUE(1), 
        INDIGO(-1), VIOLET(-11);
        
        private final int value;
        Rainbow(int value) { this.value = value; }
        public int getValue() { return value; }
    }
    
    public class Enum04 {
        public static void main(String[] args) {
            System.out.println(Rainbow.YELLOW.ordinal()); // 2
        }
    }

    その他の方法


    http://tcpschool.com/java/java_api_enumを参照

    Reference


    http://tcpschool.com/java/java_api_wrapper
    http://tcpschool.com/java/java_api_enum