IntegerクラスのソースJdk1.8オン

 関係を実現し、その後継者を見てください:
公共の整数インクルードは、Number最終的なクラスを実装同等<整数>を拡張

次のように番号が特定のコードの種類を変換するために使用された6つの抽象メソッドについてを含む、抽象クラスである:
パブリック抽象クラス数実装たjava.io.Serializable {

パブリック抽象INT intValue();

でパブリック抽象ロングのlongValue();

抽象公衆; Oフロート()に従ってFloatValue

;ダブル()内のパブリック抽象のdoubleValueを

公共のバイト0の対応するByteValue(){
リターン(バイト)intValue();
}

公共ショート対応するShortValue(){
リターン(ショート)intValue();
}

/ ** JDK 1.0からのserialVersionUIDを使用* 0.2 /相互運用性のための
プライベートロングのserialVersionUID =最終的な静的-8742448824652078965L;
}
        これはチェンHouziクラスの強力なターン後に達成されます。
パブリック(http://www.amjmh.com)における長のlongValue {
リターン(長い)値;
}
        同等のインターフェースの外観は、唯一のcompareToメソッドのサイズを比較する:
公共のintのcompareTo(T O);    
            整数特定見える        
 公共のintのcompareTo(整数anotherInteger){
        リターン(this.value、anotherInteger.value)の比較;
    }

    公共のint静的比較します(int型X、Yのint){
        リターン(X <Y)-1:((X == Y)0:?。1);?
    }
      あなたはコードビットで激しい見れば、次のコードをコピーし、その実行結果を理解するために見A。
        
Testクラス{公共
のpublic static無効メイン(文字列[] args){
整数IT1 = 128;
整数IT2 = -128;
整数IT3 = 128;
のSystem.out.println(it2.compareTo(IT1)+「----- X <Y ");
のSystem.out.println(it1.compareTo(IT2)+" ------ X> Y「)。
System.out.println(Integer.compare(IT1、IT3)+ "----- X == Y")。

}
}

       印刷結果:
-1 ----- X <Y
。1 ------ X> Y
0 X == Y -----

 


2.整数のキャッシュの問題

            整数デフォルトはキャッシュ間隔-128〜127に配置されます。しかし、最大のキャッシュ値を手動で調整することができ、以下を参照してください。

        AutoBoxCacheMax =サイズ:Javadocコメントは明らかに、このクラスがキャッシュにあり、127の高い値は、VM引数-XXを使用して変更することができる128と127の間の値のオートボクシングをサポートすることを述べています。だから、キャッシングは、forループで起こります。それはちょうどローからハイに実行され、整数配列名前付きキャッシュ内の整数インスタンスの格納など、多くを作成します。そのような単純な。このキャッシュは、Integerクラスの最初の使用でやっています。今後、これらのキャッシュされたインスタンスは(オートボクシング中に)代わりに新しいインスタンスを作成するのに使用されます。

         結果を確認するために、次のコードを実行する:
        
パブリッククラスIntegerTest {
パブリック静的無効メイン(文字列[] args){
= 2008の整数IT1;
= 2008の整数IT2;
のSystem.out.println(IT1 == IT2); //真注:なぜそれの127の上には本当でしたか?私が設定されているためVM引数は、パラメータは、-XX:AutoBoxCacheMax = 2008
整数it1t = 2009;
整数it2t = 2009;
System.out.printlnは(it1t == it2t); // false説明:以上の2008偽、右~~
整数= newit1整数新しい(127)新;
整数= newit2新しい新しい整数(127);
System.out.printlnは(newit1 == newit2); // false説明する:新しい単語は、ヒープ内の新しいオブジェクトによって占有され、独立したメモリです
int型IT3 = 127;
int型; = 127 IT4
int型IT5 = 2008;
System.out.printlnは(== IT4 IT3); // trueに
するSystem.out.println(IT1 == IT5); // trueに
}
}
            印刷結果:
        
trueに


真に
trueに

        設定し、仮想マシンの起動パラメータ
---------------------

おすすめ

転載: www.cnblogs.com/ly570/p/11257594.html