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

JSFでのjQuery

JSFでのjQueryの取得 以前、Seleniumに関連したエントリーを書いたときにJSFではidが親要素を伴うと書きました。 例えば <form id=”form1″ …

no image

String,Integer,Booleanの相互変換

データベースにはbooleanでデータが入っているのに画面では0か1の数字でないと表示ができないときなどがあると思います。 そんな時に文字列と論理値、あるいは文字列と数値、数値と論理値の変換などをする …

no image

instanceofとgetClassについて

Javaでの型の判定などに使われるinstance ofとgetClassについてメモしたいと思います。 Contents1 instance of2 getClass instance of A i …

no image

arquillianでのリソースファイル読み込み

以前、このエントリーでarquillianからライブラリが利用できず、追加のライブラリを導入した、ということを書きました。 実はリソースファイルもそのままですとarquillianからは使用できません …

no image

JSFとManagedBeanがバインドされない

JSFとmanagedBeanはEL式.プロパティでバインドできますが、専用のタグを使わないとバインドされません。 managedBeanでtestというフィールドがあった場合、 JSF側で [cra …

アーカイブ