【Java難点の知識】String s=new String(「abc」)とString=「abc」;区別する


まず、String s=new String(「abc」);この言葉は2つのオブジェクトを作成しました.
1つはnewから出てきたインスタンスオブジェクトであり、もう1つは「abc」である.
sはオブジェクトではなく、sは参照(C++のポインタ)にすぎません.
JavaのStringクラスのコンストラクタをクエリーします.apiには次のようなコンストラクタがあります.
public ( original)
  • は、新しく作成されたStringオブジェクトを初期化し、パラメータと同じ文字シーケンスを表す.すなわち、新しく作成された文字列は、パラメータ文字列のコピーである.Stringは可変であるため、originalの明示的なコピーが必要でない限り、この構成方法を使用する必要はありません.
  • パラメータ:
  • original-String.

  •  
    String s="abc"  明らかにオブジェクトは1つしか作成されていません.
    String s="a"+"b";この文は3つのオブジェクトを作成し、"a""b"および"ab"
    次に、両者の違いは以下の通りです.
    String s=new String(「abc」)です.生成されたオブジェクトはJVM(java仮想マシン)の定数プール(プリコンパイル)にありません.
    後者は.(注意:Stringクラスはfinalタイプで、Stringクラスオブジェクトは変更できません)
     
    参考資料:http://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html