知識の定数プール---ジャワの[ネット]ベースJava_定数プール

序文

  知識ネットワーク:

  • 定数プール
  • 変数
  • 定数
  • オブジェクトリテラル      

定数プールとは何ですか

  定数プール内のJVMスレッドがメモリの領域を共有している、Javaがあろう  データが決定されたコンパイル したがってシステム性能に頻繁に作成し、破壊するオブジェクトの影響を回避し、一定のプールに格納されています。

  定数プールの主な店舗は、  最終的な定数 値、および  オブジェクトリテラル 値。

  定数プールデータに等しいが存在しない、コンパイル時のように、アドレスを一定値に向けられている場合には、バック値か否か定数プールを検出するたびに定数を割り当てる必要がない場合値は、メモリアドレス定数に対するその後の価値定数プールの値を、作成します。

知識ネット

  Javaコードの実行は:  1がコンパイルされ、他方が実行されます。私たちはあらゆるプラットフォームでJavaプログラムコードは二つの期間を経験する、ということを知っています。

 

理解を容易にするために、我々は、説明、実行のための第二の期間中に再び分割されています。次のように:

  第一段階は、我々はと呼ばれるコンパイル javacがコンパイル済みのクラスファイルに今回のJavaコードを。
   
  第二は、私たちが呼ばれるに説明するために、この時点で、クラスローダ(クラスローダー)クラスのメンバ変数をファイルします、コンストラクタ、メソッド、およびメモリにロードされた他のメンバー。   私たちは、第三、それを呼び出します実行し、その時点で我々は、オブジェクト、オープンスペースを作成することに精通している、メモリの割り当て、コードを実行します。  

 

  変数:実際の変数は、「実行可能なストレージ・スペース」を表し、それは空間的な位置を決定することですが、どのような値が内部に配置されたことは不明です。私たちは、変数名によるので、この操作の値は、「収納スペース」店「収納スペースに対応」にアクセスすることができます。 

  定数:簡単な理解はすべて、最終的なキーワードfinal変数によって変更される定数です。一定の初期化時に割り当てる必要、との割り当てを変更することはできません一度。あの白いの最後の文によって固定値です。

  オブジェクトリテラル:私たちは、新しいオブジェクトは通常、そのオブジェクトのインスタンスである必要があり、オブジェクトリテラル定数は、新しいオブジェクトを割り当てることなく、オブジェクトに直接です。たとえば、次のようにStringオブジェクトとオブジェクトの基本的な種類の包装部分。次のように:

  

30 =整数;   // 定数プール。
B =整数新しい新しい整数(40);   // ヒープメモリ内のオープンスペース。
C 30 =整数;   // 一致定数プール、およびポイントアドレス。

STR1のString =「あなた」;   // 定数プールインチ 
文字列STR2 =「良い」;   // 定数プールインチ 
STR3 =文字列の新しい新しい文字列(「あなた」);   // ヒープメモリ内のオープンスペース。
文字列STR4 =「あなた」+「良い」;   // 「hello」を定数プールインチ PS 2つの決定された値、縫合または固定値。
STR5のSTR1 + = str2の文字列; // ヒープメモリインチ PS:ラン値の間にSTR1、STR2ポイントが変更される可能性があり、それが固定されていない   STR4 = STR5!   二人は(ない同じメモリアドレス)の世界ではない 
文字列化10 = str5.intern(); //()メソッドが同じ値の文字列がある場合、定数プール内のインターン定数プールを見て、参照があるが返され、文字列定数プールを追加しません。従ってSTR4化6 ==

 // PS:STR3は、実際には、製造する際、作成したいずれかまたは両方のオブジェクトと文字列このコンストラクタ関連パブリックストリング(文字列オリジナル){...}を  
 // コンストラクタ文字列を見ることができますこれは、パラメータとして文字列が必要です。この新しい文字列(...)で、ヒープ内のオブジェクトを作成し、その後、ヒープメモリは、対応するスペースを開き、
 // 必要なパラメータ文字列定数プールが同じ値を行く見つけ、そこになります直接参照(オブジェクトが生成され、このとき)、値がヒープに格納されていないメモリ空間を開き、STR3アドレス空間(導くであろう2つのオブジェクトが生成される場合に)。
// 我々は無益なスペース、無駄を開くために、新しい文字列(...)プロセスを見ることができます。

// 私たちは通常、「値」を比較する()メソッドに等しい()メソッドを、等しいときに我々は通常、2つの文字列を比較することを知っているに等しいではありません、そして何より「メモリアドレス」と同じです。
// ==値の比較は等しいと同じメモリアドレスされています。

  

参考:定数プール[ベース] Java_でのJava

おすすめ

転載: www.cnblogs.com/HelloHai/p/11754343.html