Java langパッケージ-Boolean

2637 ワード

BooleanクラスはJavaの基本タイプbooleanのパッケージクラスです.このクラスは簡単ですから、ソースコードを直接見ましょう.

public final class Boolean implements java.io.Serializable,
                                      Comparable<Boolean>

         final修飾が見られ,このクラスは継承できないことを示し,シーケンス化可能で比較可能である.
         Boolean内部にはboolean型のプライベートドメインでステータスが保存されています.

/**
     * The value of the Boolean.
     *
     * @serial
     */
    private final boolean value;

         このプライベートドメインはfinal型なので、Boolean型のインスタンスは不変量です.

/** 
     * The <code>Boolean</code> object corresponding to the primitive 
     * value <code>true</code>. 
     */
    public static final Boolean TRUE = new Boolean(true);

    /** 
     * The <code>Boolean</code> object corresponding to the primitive 
     * value <code>false</code>. 
     */
    public static final Boolean FALSE = new Boolean(false);

          Booleanクラスには2つの静的インスタンス(finalであることに注意)が用意されています.新しいインスタンスを作成するのではなく、既存のインスタンスを優先的に使用すると、スペース(Booleanオブジェクトのサイズが24バイト)と時間のオーバーヘッドを節約できます.

public static final Class<Boolean> TYPE = Class.getPrimitiveClass("boolean");

       ここでは、基本タイプbooleanに対応するclassオブジェクトを表す静的ドメインTYPEもあります.

      System.out.println(Boolean.TYPE);//boolean
      System.out.println(Boolean.class);//class java.lang.Boolean

       Booleanクラスでは、以下のように静的valueOfメソッドが提供されます.

public static Boolean valueOf(boolean b) {
        return (b ? TRUE : FALSE);
    }
public static Boolean valueOf(String s) {
	return toBoolean(s) ? TRUE : FALSE;
    }

        静的インスタンスを優先的に使用する必要がありますが、booleanまたはbooleanを表す文字列(例えば「true」)を取得すると、valueOfメソッドを使用してパッケージクラスを得る必要があります.メリットはスペース時間のオーバーヘッドです.
        またJavaでは基本タイプbooleanの自動箱詰め(classにコンパイルする過程で行う)が使用される救いがvalueOf(boolean b)である.
        最後にhashcodeの方法を見てみましょう.

public int hashCode() {
	return value ? 1231 : 1237;
    }

        ここを見ると必ず疑問がありますが、毛はこの2つの数ですか?
hashCode法の役割は,オブジェクトが分散リストに格納されるときに良好な分布があることを知っている.ここでは素数を2つ選びましたまた一般的に複雑なオブジェクトのhashCodeの計算はそのドメインオブジェクトのhashCodeに基づいて計算されるので,ここでの2つの素数も大きな素数である.具体的には
boolean-hashcode .