skillup

技術ブログ

Java

文字列操作(String系)

投稿日:

Javaの文字列について書きます。

StringとStringBuilder

Javaの文字列ですが、大きく分けると

  • String
  • StringBuilder

の2つのクラスに分かれます。(他にもStringBufferもありますが、とりあえず割愛。)

文字列の追加はStringBuilder

文字列の使い分けですが更新や追加を頻繁におこうなうような文字列の場合はStringBuilderを使います。

これはStringが一度生成されると変更がされないインスタンスなため、値の編集には向きません。文字列の連結などをする場合、新しい文字列を内部に作っているため、メモリを浪費します。

a=a+bのような結合をStringで行った場合、aを確保してあったメモリは固定長のため破棄され、bを追加して、新たな領域を確保しなくてはいけないからです。

悪い例

この点、StringBuilderは値の更新が可能なため、メモリの節約に向いており、高速で処理を行うことができます。このため文字列の追加にはStringBuilderを使いましょう。

文字列の参照はString

逆に更新されない文字列(主に値の設定と参照と破棄)に対してはStringを使います。

StringBuilderなどで更新された文字列をインスタンス内に格納するときなどはtoStringでStringにして設定をします。

 

-Java
-

執筆者:


  1. yamamoto より:

    補足しておくと、Stringは固定長というわけではなく、不変オブジェクトです。
    一度生成されたインスタンスは二度と変更されないということですね。だから、+演算子で連結すると、新しいインスタンスが作られるということになります。

    • matsumoto より:

      コメントありがとうございます。

      こちら参考にしたブログの記述をあやまって解釈しておりました。

      修正させていただきます。

comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

フィールド以外のプロパティをエンティティに持たせる

JPAでは基本的に1テーブル、1クラスです。 このためプロパティは必然的にテーブルのフィールドに対応しています。 ただ、必ずしもプロパティだけでなく、臨時で持たせておきたい、プロパティがあったりします …

no image

JSFのテンプレート機能

Contents1 保守性の向上で必要なHTMLの考え方1.1 サンプル1.2 ファイル構成1.3 ソース1.3.1 静的なファイル群1.3.2 テンプレート1.3.3 アクセスファイル1.4 Net …

no image

mavenでJavadoc出力

Netbeansでプロジェクトから右クリックでjavadocの生成はできますが、実はmavenでビルドするときにJavadocを生成できます。 ただ出力するだけではなくてパラーメータをいろいろとセット …

no image

JavaSEでのCDI

以前、JavaSEでもCDIを使ってみたい!と思ったのですが、以前は探し方が悪かったのか情報を見つけ出すことができませんでした。 が、昨日ちょっと検索したらちょっと情報があり、無事実装できたのでメモし …

no image

リファクタリング

業務で大幅なリファクタリングをする機会があり、その際の注意だったり、気をつけるべきことなどをまとめておきます。 自分用なので自分にしかわからない言葉で書いてある可能性が大きいです。 気になる方は問い合 …

アーカイブ