興味深いJavaのString、StringBufferのとのStringBuilder

 文字列のはじめに

  文字列のカテゴリはjava.langのパッケージに属し、Stringクラスは不変クラスである、イニシエータへの変更は、新しいString Stringオブジェクトを生成します。

  2つの方法の文字列を作成します。

  1.でコンストラクタを作成します。STR =文字列の新しい新しいString(「私は文字列AM」)。

  変数の代入2.:文字列= STR "I AM A文字列";

  最初はで初期化されるヒープヒープは、文字列オブジェクトを作成し)、その後、ユーザに返されるオブジェクトを参照します。

  、JVMは最初の(文字列定数プール)が既に存在する場合、オブジェクトは、文字列プール内に存在するかどうかを判断するために、それは既存の文字列変数のアドレスが割り当てられますでしょう第二の方法、あなたが存在しない場合は、プログラムを実行します、変数に割り当てられ、そのアドレスに定数プールに文字列。

  一般的な方法の文字列

  インターン() インターンの方法は、列に対応する定数値を返します。存在する場合、メソッドの実装ではインターンは、文字列と同じ定数値定数プールのJVMチェックは、一定値ではない場合、一定の値とリターンを作成し、戻されます。これは、定数プールではなく、文字列、二重引用符と同等のものを作成するための文字列のヒープのインターンを返す文字列値です。 

        文字列STR1 = "ABC" ; 
        文字列STR2 = "ABCD" 
        文字列STR3 = "ABC" + "D" 
        文字列STR4 =(0009 + "D" ).intern(); 

        System.out.println(STR2 == STR3)。//  
        のSystem.out.println(STR2 == STR4)。// 

   長さ():取得した文字列の長さの長さ()メソッド

   charAt(): i番目の文字のcharAtメソッド(i)の文字列を取得します。

    CHAR CH = str.charAt(私は); //私は、文字列は文字変数を保存し、どこでも得ることができ、文字列のインデックスです

   GetCharsは():指定された文字位置メソッドGetCharsはを取得します(4つのパラメータ)

  CHAR配列[] = 新しい新しい チャー [80];   //は、最初の文字列、配列と呼ばれる配列に十分な大きさの容量作成
  str.getChars(indexBegin、indexEnd、アレイ、arrayBegin);
  / *を
  1、indexBeginは:必要コピーされた文字列の開始インデックス
  2は、indexEnd:文字列終了インデックス,. 1- indexEndをコピーする必要がある
  。3、配列:配列名char配列は、上記で定義
  4、arrayBegin:インデックスの配列アレイ格納開始位置
  * /

   GetBytesメソッド():符号化されているデフォルト、および保存する新しいバイト配列に結果、同様のGetCharsは()で行われ、インターネットの文字列のため。

   等号():ソース及びオブジェクトコンテンツの等号(Objectオブジェクト)は、文字列比較は等しいです。

   equalsIgnoreCase():使用に類似のequals()が、ケースを無視して比較。  

   compareTo()のcompareTo(文字列anotherString)、両者は辞書文字列のサイズを比較します。

   )(含まれています(たCharSequence S)が含まれ、それは、ソース文字列sを含むかどうかを判定する。返された0を除く、1備えるを返します。

   regionMatches(): regionMatches(ブールignoreCaseは、TOFFSET int型、文字列の他、ooffsetはint、int型LEN)。最初のパラメータIGNORECASEサイズ比較を無視するかどうかを示す、比較は、他が同じであるooffset文字列を開始TOFFSET文字列添字と添字を開始し、lenが指定された比較の長さを示します。

   startsWith()は:のstartsWith(文字列の接頭辞)の接頭辞で始まるように、それは、trueを返しているかどうかを判定し、その逆、falseが返されます

   endsWith(String型の接尾辞): エンディング接頭辞かどうかを決定するfalseが返されたtrueを返し、その逆であり、  

   indexOf():のindexOf(int型CH)、インデックス文字が返された場合、文字chのASCIIコードを見つけるために、左から右へ。ない場合は、-1を返します

   :のlastIndexOf()インデックス文字が返された場合、文字chのASCIIコードを見つけるために、右から左へのlastIndexOf(int型CH)。ない場合は、-1を返します。

   ストリング():ストリング(INT beginIndexパラメータ、INT endIndexの)は、間に1列をendIndexのためにbeginIndexパラメータから文字列添字インデックスを返します。 

   CONCAT():スプライシング二つの文字列   

   交換してください():文字列は、文字列はすべてnewChar oldCharに置き換えることをすることがわかる。このプロトタイプ関数から、(oldChar文字、文字newCharに)を交換してください

   toCharArray(): char配列に文字列を変換します。

   toUpperCaseの()とtoLowerCaseメソッド():大文字/小文字への転送

   :()トリム両端が削除空白文字列の後、新しいStringオブジェクトを返します。変更されていない場合は、元の文字列オブジェクトが返されます。

   valueOf():文字列の内容を示すパラメータを返す、パラメータは、ダブル、整数、浮動小数点、文字であってもよい []、長いchar型のようなああ、基本的な缶。実際にそれをキャスト!文字列の中に他のタイプのデータを変換するには。

  Stringクラスの特徴

  ()メソッドが完了した等号、「==」が達成される数値比較アドレスを使用して等しい1.Stringクラスオブジェクトを分析します。
  2.Stringクラスは不変(最終)であり、Stringクラスへの変更は、クラスは、新しいStringオブジェクトを返している。文字列参照がクラスメソッドに渡され、この場合、文字列の方法の任意の変化オブジェクトの元の基準点は影響を及ぼしません。ごみの空間を演出していないことと、自動的にプールに、完成された工事の方法を使用しない直接代入を使用してクラス3.String方式の2件のインスタンスがあります。

  注意点:

  場合など、文字列の文字列の連結、:文字列str = "AB" + "CD" + "EF"。

  理論的には:まず、オブジェクトコードABCDEF最後の世代が少なく、効率的、ABのオブジェクトを生成して、ABCDのオブジェクトを生成します。

  実際の動作:コンパイラが自動的にのStringBuilderによってコード行を最適化する、1つのオブジェクトのみ生成

  StringBufferの 

  StringBufferのは、変数の型で、その意味は、文字列の世代の変化は、新しいオブジェクト、スレッドセーフを生成しません。

いいえ。 方法について説明します
1 公共のStringBufferのappend(文字列s)は
この文字列に指定された文字列。
2 公共のStringBufferのリバース()
 の逆の形に置き換え、この文字列。
3 公共の削除(int型開始、int型エンド )
この文字列の部分文字列を削除します。
4 公共のインサート(int型オフセット、int型I )  このシーケンスへの引数の文字列表現。
int
5 (int型開始、int型エンド、置き換える文字列strを)
与えられた  String 文字のこのシーケンスの部分文字列を置き換える文字。

  StringBuilder

  StringBuilderのjava.langのクラスは、パッケージです

  StringBuilderの変数タイプ、線形安全でない、同時操作をサポートしていない、それはマルチスレッドでの使用には適していないが、その性能は、シングルスレッドのStringBufferよりも高いです

  3との比較

  StringBuilder> StringBufferの>文字列:実行速度の点では3の比較

  セキュリティ:Stringクラスは不変である、それはスレッドセーフすべての不変クラスには、スレッドセーフです。

      StringBufferのは、ロックすることで達成、可変クラスであるスレッドセーフ

      StringBuildeはスレッドセーフが、最高のシングルスレッド実行効率ではありません

おすすめ

転載: www.cnblogs.com/xywl-bky/p/11712030.html