(a)は、パッケージ型の8つの基本型に対応するラッパーの解釈の基本データ型のJavaソース

EDITORIAL言葉

    最近のプロジェクトは、今、プログラマーとして限り小さなバグを、遭遇したとき、彼らは、基本的な事柄を知ることが恥ずかしい取得 - このマークは、繰り返さない願っています

問題:

ロングlong1 = 127L; 
ロングlong2 = 127L; 

System.out.println(long1 == long2); //真
のSystem.out.println(long1.equals(long2)); //真の


ロングlong1 = 128L; 
ロングlong2 = 128L; 

System.out.println(long1 == long2); // falseを
するSystem.out.println(long1.equals(long2)); //真
    

  なぜ<= 127、可能性> 128ができないのですか?パッケージタイプは、==の比較をも使用されていますか

分析:

この値を超える127にキャッシュと-128の方法の値が、それは2つのオブジェクトが返さ==と比較され、新たなパッケージ・オブジェクトを作成する際の包装のvalueOfクラスのメソッドを使用して、2つの値の1比較間違いなく偽。以下は、ロングのvalueOfソースのタイプです

パブリック静的ロングのvalueOf(長L){ 
        最終INTは128 =オフセット。
        IF(L> = -128 && L <= 127){//キャッシュする
            LongCache.cache [(INT)L +オフセット]を返します。
        } 
        新しいロング(L)を返します。
}

  

2.メソッドのvalueOfキャッシュ値の異なるタイプが、それは何ですか?次の5つの値をキャッシュしています

タイプ キャッシュのスコープ 値の範囲
キャラクター       0〜127 0〜65535
バイト  -128〜127 -128〜127
ショート  -128〜127 -32768〜32767
整数  -128〜127 -2147483648〜2147483647
長いです  -128〜127 -9223372036854775808〜9223372036854775807

 

 

 

 

 

 

 

 

 

3.FloatとDouble型の値にそれをキャッシュされていますか?以下は、フロートのvalueOfの源であります

パブリック静的フロートのvalueOf(フロートF){ 
        新しいfloat(F)を返します。
}

  何のキャッシュ値を見ることができないとして、それが直接==を使用して比較することはできません

 

4.パッケージタイプのいくつかの基本的な種類やその他の機能は、次のアドレスのブログを参照してください。

(a)は、パッケージ型の8つの基本タイプに対応するJavaソースコードを理解します

 

要約:

二つの値が実質的に推奨されるタイプのラッパーである場合1.直接法に等しいです。

 

おすすめ

転載: www.cnblogs.com/xiaozhijing/p/10968715.html