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

GlassFishとTomcatの違い

JavaEEの開発を始めてからは基本的にサーバーとしてGlassFishを使っています。 一般的なJavaのサーバーというとTomcatが有名ではないでしょうか。少なくとも私はTomcatしか知りませ …

no image

pretty-configでのファイルアップロード

先日、こちらのエントリーでpretty-configを使うとファイルのアップロードができない、というエラーが起こっていたのですが、本日社長により解決していただきました。 原因としてはURLがスラッシュ …

no image

JPQLでの算術関数

複雑なJPQLを書いていると、通常のレコードの取り出しだけではなく、合計(SUM)や算出(COUNT)などのいわゆる算術関数を使うことが一般的です。 JPQLでもこれらを通常通り扱うことができます。 …

no image

JSFのプルダウンに関して(イベントをトリガーにする&非ajax)

いろいろと社内アプリを作っていたせいでかなりプルダウンは慣れたとおもったのですが、未知の部分がさらにあったのでまとめます。 Contents1 初期値に値がないとき2 プルダウン変更時に遷移 初期値に …

no image

メソッドのtransient

エンティティを作成するときに、データベースのカラムにない値をプロパティを持たせるためにはtransientという修飾子が必要です。 参考リンク フィールド以外のプロパティをエンティティに持たせる 通常 …