Javaプログラマのインタビュー、バッファリング機構自動シーリング/梱包や開梱原則あなたは何を知っているように?(RPM)

アウトライン

この記事のXiaobian実際の開発に梱包し、梱包緩衝機構を、対応するJavaアプリケーションでの基本データ型の詳細な説明。Javaの基本データ型のラッパークラス---自動シーリング、根本的な分析を行うために開梱自動で主な用途。

JDK1.5、/シンタックスシュガーをアンボクシング自動ボクシングの導入以来、それはコードよりコンパクトなプログラマがもはや明示的に変換する必要が行うものではありません。基本タイプ包装オペレータの特定の種類の作用下で、オートボクシングと呼ばれる対応するオブジェクトパッケージングプロセスにプリミティブ型を変換するためのコールタイプのパッケージのvalueOf()メソッド、;包装さもなければxxxValueを呼び出す()メソッドプロセスのプリミティブ型に変換されたクラスオブジェクトは、自動アンパッキングと呼ばれます。

 

パッケージングの各タイプに対応し、Javaの基本データ

データ型の詳細な研究は、以下を参照してください。データ型の概要

第二に、実用的なアプリケーションでのラッパークラスJAV

シーリング:

=新しい整数(123)内の整数 ; // プリミティブデータ型の値の参照を対応するオブジェクトの種類に。

(中)のSystem.out.println; //オブジェクトの値をプリントアウトではなく、根本的に対処するために---のtoString行わ書き換える
注:

文字列が整数を回します:

=新しい整数(「0x23の整数 」); // 実行エラー:下の文字列は、それぞれを判断します変換時に、文字列の配列として格納され、すべての時間は数ではありませんが、それだけで小数をサポートしています。
基本的な数値データ型は、包装Numberクラスのサブクラスです。

文字列は、ブールを回します:

ブールbは、新しいブール(文字列)=; //リクエストパラメータは、文字列、真のSTR =「true」のb値され、strが「偽」または任意の文字列であるとき、Bは偽です。
 

自動シール:

変数の基本データ型は、対応する直接参照タイプに割り当てられました。これは、JDK1.5の新機能です。

実装の基礎となる:自動シーリングは、実際の静的メソッドのvalueOfと呼ばれている() - > = Integer.valueOf(I)の整数で;のvalueOfはInteger型のインスタンスを返します。あるいは自動的に= 1自動シーリング整数、整数の上述した構成と同様の方法を呼び出します。

/ *
*自動シーリングテスト
* /
= I int型1;
INT J = 1;
整数IN1 = I; //自動シーリング
整数Integer.valueOf IN2 =(I)
のSystem.out.println(IN1 IN2 == ); trueに//
するSystem.out.println(in1.equals(IN2));真の//
のSystem.out.println(in1.equals(J)); // trueに
// Jを用いて、基本的なデータ・タイプでありますオブジェクトを比較する方法に等しいとき、Jは、自動シーリングあります
 

オートアンボクシング:

NUM1 1 = INT;
INT NUM2 = 2;
= NUM1における整数;
INT = RES + NUM2で; //アンパック
するSystem.out.println(RES)を、
基本データ型の割り当ての対応するタイプを直接参照の//例変数。JDK1.5の新機能の1つ。基本となる実装:実際に呼び出さ****値()のメソッド(xxxはタイプに対応する基本データを参照します)。---> INT I = in.intVlaue() ; // ***値() に対応する基本型の値を返します。
整数のハッシュコードは、それ自体です。ハッシュコードの整数底()メソッドのオーバーライドを行います。

ハッシュコード値の種類は変更されません。

注意:

I1 = 123整数;

整数I2 = 123;

I1 I2 ==; // trueに、

整数= 1234 I3;

整数I4 = 1234;

I3 I4 ==; // falseに
解釈:初期値のint型定数プール、のみ127 -128の範囲を初期化します。時間値が定数プール、および定数プール内の定数から直接値から、127 -128であるときに共有され、I1は== i2は、値は-128と127の間にない場合には、意志新しい整数()、そうI3、I4ポイントヒープメモリアドレスは同じではありません。

オートアンボクシングアプリケーション:

I1 = Ingeter新しい新しい整数(123);

I = int型123;

I1 == I; // trueには
説明:ときの基本的なタイプの直接参照型の動作、自動的に参照型をアンパック。

基本原理:自動開梱達成するためにintValue()を呼び出します。アナロジーの他のタイプ。

 

第三に、バッファリング機構のパッケージング

Stringクラスと同様の包装は、同様であるが、そのオブジェクトに一度作成された非可変クラスは、変更することができません。さらに、パッケージは、2つのオブジェクトが等しいパッケージの基本データ型の値限り、同じタイプの2つのオブジェクトをパッケージングするためのequalsメソッドをオーバーライドし、次いで、equalsメソッドは、そうでなければ偽を返し、真を返します。
「==」を使用する場合はそうでない結果が偽である、2つの参照が同じアドレス(物体の同一点)を指している場合、結果が真である、ラッパークラスに2つの参照を比較します。 
パッケージ・キャッシュ・オブジェクト・クラスは、オブジェクトの値がキャッシュの範囲内にカプセル化されている場合、包装必要のオブジェクトは、そして、それが返されたときに頻繁に使用されるパッケージング前に作成されたオブジェクトの特定の実装は、クラスにある提供しますオブジェクトをキャッシュし、または新しいオブジェクトとリターンを作成します。 
パッケージでは、キャッシュの基本データ型の価値の範囲は以下のように:

パッケージタイプの基本データ型は、オブジェクト(基本的なデータ型の値)をキャッシュ
(すべての値)falseに、trueにブールブールを
-128〜127バイト(すべての値)のバイト
ショートショート-128〜127
文字0〜127のchar
〜127 -128整数int型(デフォルトは127)である
ロングロング-128〜127
フロートフロートキャッシュなしの値
ダブルダブル非キャッシュされた値
5つのクラス(バイト、キャラクター、ショート、整数でバージョン以降JDK1.5で、Javaパッケージ 、ロング) 増加します次のように対応するプライベート静的クラスメンバ内部キャッシング機構は、内部キャッシュ・クラスの整数ラッパークラスのソースを適切なパッケージングオブジェクトを提供します。

 

呼ば源として、自動包装に基づいて、キャッシング機構が役割を果たすことになる。パッケージングをロードするときに、クラス内の実装型アレイを((高 - 低)+1)の長さに初期化され、低固定値-128、及び高いデフォルト値127は、システム・コンフィギュレーション・ファイルによって修正することができる、高範囲のカスタム127 ---------(Interger.MAX_VALUE + 127)であり、 Integer.MAX_VALUEのは、int型の変数の正の最大値です; '

キャッシュ機構:第一、機構をオートボクシングパッケージを作成して、クラスオブジェクトは、条件が満たされた場合に見つかった場合-128 ---- 127の範囲内の値が、それは、キャッシュをキャッシュから指定された値を検索するかどうかを判断します、オブジェクトは、それ以外の場合は、新しいオブジェクトが、パッケージに対応する指定された目標値に新しいものではありません。

新しい新しい整数=整数(100);
整数整数新しい新B =(100);
のSystem.out.println(==のB);
//出力は、2つの異なるオブジェクトに属する、実施偽、非自動包装機構でありますそれがfalseに返されます。
// --------------------------------分割ライン---------- -----------------------------
INT NUM1 = 127;
INT NUM2 = 127; //
整数IN1 = NUM1;
整数IN2 = NUM2 ;
のSystem.out.println(== IN1 IN2); // trueに
//すべての範囲内で、真するように
-------------------- // ------------分割ライン------------------------------------ ---
INT NUM3 = 127;
INT Num4 = 128; //が上限を超えると、新しいオブジェクトは、バッファの範囲外となる
整数= IN3のNUM3;
整数IN4 = Num4;
のSystem.out.println(== IN3 IN4); / /偽
包装IN4 // num4が上限値を超えると、新しいオブジェクトは、バッファの範囲外であるので、偽
 

バッファの上限は、実行時にシステムの特性を変更することによって設定することができるが、実際には、整数-128キャッシュ制限は、固定されています。 
たとえば、コマンドラインに入力することができます。

Javaの-Djava.lang.Integer.IntegerCache.high = 100 XXX
   または仮想マシンサーバを選択し、タイプ:

-XX -serverのJava:= 100 XXX AutoBoxCacheMax
       システムパラメータの使用または選択した仮想マシン-clientパラメータなしパラメータ-server削除した場合、エラー、デフォルトの仮想クライアント・マシンが仮想マシンであるため、すなわち、 AutoBoxCacheMaxパラメータ:クライアント仮想マシンは、-XXをサポートしていません。 
       -XXにキャッシュ制限のプロパティを設定するために、上記のように、両方の場合:AutoBoxCacheMaxパラメータが優先。

ポストスクリプト
----------------
免責事項:この記事はオリジナル記事ですCSDNブロガー「hu_beliefs」、およびBY-SAの著作権契約、複製、オリジナルのソースと、このリンクを添付してくださいCC 4.0に従ってください声明。
オリジナルリンクします。https://blog.csdn.net/hu_belif/article/details/82262579

おすすめ

転載: www.cnblogs.com/ffaiss/p/11460610.html