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

JSPでのカスタムタグ

前回のインク―ドですが、文字列以上の情報を渡すことはできませんでした。 いろいろ調べたり、上司に聞いてみるとカスタムタグという独自のタグを作る機能があるとのことでさっそく調査。 Contents1 カ …

no image

例外処理について

Javaの例外処理について書きます。 自分はPHPメインでやってきましたので、この例外についてはうろ覚えでした。 PHPだと例外処理はあるんですが、まああんまり使わなかったり、理解がいい加減でもなんと …

no image

JSFのifタグ

JSFは基本的にテンプレートなので、 HTML+CSS+JavaScript ロジック側からの変数の出力 ループ処理 以上のことをさせることはあまりありません。 が、まれに条件分岐なんかをさせたいとき …

no image

try~catch~finallyで気を付けること

JavaでExceptionが発生したとき、基本的にはtry~catch~finallyをつかっているのですが、今回Exceptionが吐かれないという事態があったのでメモします。 [crayon-6 …

no image

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

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