列A =新しい文字列(「ABC」)は、複数のオブジェクトを作成しました

文字列str =新しいString(「ABC」);このコードはしばしば問題であり、それはこのコード行は、いくつかのStringオブジェクトを作成するために何直後?

私はこの質問に私たちは見知らぬ人、答えが知られている、2全く信じていません。

その後、我々は、この質問から展開文字列が一緒にオブジェクトを作成することに関連するいくつかのJAVAの知識を確認します。  

私たちは四つの部分を見て、文字列strの中に上記のコード行を入れ、=、「ABC」と新しいString()することができます。= strの変数が初期化され、参照(またはコールハンドラ)、それにオブジェクトを割り当てられ、明らかにオブジェクトを作成できませんでした。ただのstr、String型という名前の変数を定義し、それはオブジェクトを作成できませんstrの文字列;今だけ新しいString( "ABC")A。その後、新しいString(「ABC」)はなぜ、「ABC」と新しい文字列(として見ることができます)か?

私たちは、Stringのコンストラクタを呼び出しているを見てみましょう。  

パブリック文字列(文字列元){//他のコード...}我々はすべて知っているように、我々は多くの場合、次の2つの方法のクラスのインスタンス(オブジェクト)を作成します。

まず、新しいオブジェクトを使用して作成されます。 

第二に、反射機構を使用してオブジェクトを作成し、クラスClassのnewInstanceメソッドを呼び出します。

我々は、変数strのに割り当てられたオブジェクトとその参照を作成し、新しいStringクラスのコンストラクタメソッドを使用して、上記の何を呼び出します。同時に、我々はコンストラクタメソッドは、引数が「ABC」であるStringオブジェクトで受け入れるように呼ばれることに注意してください。したがって、我々は別の方法の議論を紹介するStringオブジェクトを作成する必要があります - 引用符内のテキストが含まれています。

 

Stringこの方法はユニークであり、それと新しい方法の間には大きな違いがあります。  

文字列str = "ABC";  

このコード行は、Stringオブジェクトを作成することは間違いありません。  

列A = "ABC"; = "ABC" 列B、ここでそれですか?

答えはあります。  

文字列A = "AB" + "CD";ここでそれを見て?

答えは3です。

ここでは、文字列プールの関連知識の見直しを導入する必要があります。  

これは、Stringオブジェクトの多くを保存する文字列プールのJava仮想マシン(JVM)内に存在し、そしてそれは、効率を向上させ、共有することができます。Stringクラスは最終的なものであるため、その値は、作成一度に変更することはできませんので、我々は文字列は、共有オブジェクトとカオスプログラムを持って心配しないでください。文字列プールStringクラスによって維持され、我々は、文字列プールにアクセスするためのインターン()メソッドを呼び出すことができます。  

私たちは、列A =「ABC」を振り返って、このコード行が実行されると、最初の文字列プール内のJava仮想マシンは、そのようなオブジェクトの「ABC」の価値があるかどうかを見つけるために、その判断が基づいています戻り値文字列クラス(オブジェクトobj)メソッドに等しいです。そう、もはや新しいオブジェクトを作成しない場合は、直接戻って、すでに存在するオブジェクトへの参照は、そうでない場合は、オブジェクトを作成し、文字列プールに追加し、それへの参照を返します。したがって、最初の2つの例では、前の三つの例が答えている理由を理解することは難しいことではありません。

 

Stringオブジェクト「+」のテキストを含む使用の引用符の間のみ作成を使用して接続を作成した新しいオブジェクトは、文字列プールに追加されます。すべては「+」の接続表現で(ヌルを含む)新しい方法新しいオブジェクトが含まれているために、それは新しいオブジェクトは、我々はそれらを繰り返すことはしません文字列プールに追加されることはありませんが生成されます。したがって、我々はテキストを含む方法を引用符で効率を向上させるために、Stringオブジェクトを作成するために、すべての人を提唱、実際には、それは、私たちはしばしばのプログラムを採用するものです。

 

スタック(スタック):主要な基本的なタイプは、(登録)のみ速度レジスタに、保存された(または内蔵タイプと呼ばれる)の参照(文字、バイト、ショート、int型、長い、フロート、ダブル、ブール値)とオブジェクト、データを共有することができ、ヒープよりも速いです。 

ヒープ(ヒープ):オブジェクトを格納するための

おすすめ

転載: www.cnblogs.com/Young111/p/11273851.html