処理文字列[Java]


文字列


デフォルトでは、JavaはStringクラスとして文字列を処理します.文字列にも文字がありますが、Stringの方が使いやすいので、文字列は通常Stringを使用します.

String


Stringクラスは通常クラスとは異なるため、特別扱いされています.Stringは参照変数として宣言されますが、newを使用しないでインスタンス化できます.
String str = "문자열";
String str = new String("문자열");
Stringは上記の2つの方法で宣言できますが、二重引用符は使いやすく、一般的な方法です.
Stringクラスは可変クラスであり、インスタンス内のデータは変わらない.
つまり、Stringインスタンスの値が変化すると、オブジェクトの値が変化するのではなく、新しいインスタンスが作成されます.
  • 不変
    インスタンスの内容が絶対的に変わらないクラスを不変クラスと呼びます.不変クラスの内容を変更すると、インスタンスの再生成が発生し、インスタンスの再生成はメモリ領域と処理能力を消費します.したがって、不変クラスを使用する場合は、内容の変更に注意してください.
  • 文字列接続

    String text1 = "정말";
    Strng text2 = "감사합니다.";
    text1 += text2;
    上記の場合、単一の文字列として作成できますが、文字列をマージするときに+演算子を使用するのは良い方法ではありません.

    理由-String類は永遠に変わらない。


    上記のコードでは、text 1とtext 2を組み合わせて、2つのインスタンスしか生成されないように見えますが、Stringは不変クラスなので、3つのインスタンスが生成されます.
    インスタンスの作成はコストのかかる処理方法であるため、多くのインスタンスを作成するとプログラムの実行速度が遅くなる可能性があります.深刻な場合は、メモリリソースが消費され、プログラムの実行が停止する可能性があるため、効率的な作成を推奨します.
  • ゴミ収集器
    Javaを必要としないメモリは、プログラミング言語によって自動的にオフになります.Javaの利点は、プログラマがメモリ領域を管理する必要がないことですが、プログラマであればメモリの無駄を避けることを考慮する必要があります.
  • StringBuilderを使用した文字列接続


    StringBuildeは、
  • 演算子の代わりに使用できます.StringBuilderはappendメソッドを使用して文字列を蓄積し、toStringを使用して文字列を出力します.
  • String text1 = "감사합니다.";
    StringBuilder sb = new StringBuilder("정말");
    sb.append(text1);
    2つのインスタンスを作成するだけで、同じ結果が得られます.StringBuilderでは、インスタンスに文字列を接続できます.
  • java 8から文字列接続はStringJoinerも使用できます.
  • 文字列フォーマット(文字列フォーマット)


    フォーマットとは、文字列を一定のフレームワークでフォーマット変更することです.
    文字列フォーマットを使用するには、Stringクラスの静的メソッドformatを使用します.
    String result = String.format("%-10s%10d원", "쌀5kg", new BigDecimal(15000).longValue());
  • において、LongValueはBigDecimalがlongタイプを返す方法である.
  • %s:文字列
    %d:数値
    %10 s:文字列の右揃え、10ビット、残りのスペース
    %-10 s:文字列の左揃え、10ビット、残りのスペース

    数値書式

    %,10s원
    前に示したように、%の後に使用する場合は、3つの位置ごとにカンマで区切ります.
    数値に変換する場合String.DecimalFormatを使用してフォーマットします.
  • DecimalFormatは、数値をフォーマット文字に変換するクラスです.
  • 0:数値の位置(桁数が足りない場合は0)
    "#":数値が存在する場所(ビット数が欠けていても入らない)
    ,:この位置にカンマを付ける
    .:円の位置
    ###,##0
    000,000
    
    DecimalFormat df = new DecimalFormat("###,##0");
    String result = df.format(new BigDecimal(15000).longValue());
    
    12を入れると、1番目に12が、2番目に000012が表示されます.
  • のほかにも、文字列を処理する方法がたくさんあります.たとえば、Apache Velocityを使用してファイル全体の文字列をフォーマットします.