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

ページャープラグイン dataTable

レコードを一覧表示する上で意外と面倒くさいのがページャーでしょう。 自力で作成してもよいのですが、なかなかこれが面倒だったりします。 また近年ではリンクを踏ませずに、スクロールするだけで表示ができる形 …

no image

RedmineAPI活用法

自社ではRedmineで基本的にタスク管理をしておりまして、チケット作成に手当がついたりします。 Redmine単体でもいろいろな機能があるのですが、 今月の作成したチケットと完了したチケットを手当と …

no image

クラスパスの通し方

今回はNetbeansでなく、IDEを使わずにJavaを使う場合の記事です。 Javaで開発している人の99%はIDEで開発をしていると思うのですが、サーバー上で一時的テストをしないといけないような場 …

no image

CIことはじめ

業務でJavaのテキスト変換ツールを作成。 プログラムよりもCIツールを使って他人の環境下で正常に稼動させるためにどうするかの調査に時間かかりましたね。 今回やりたかったことは下記の通りです。いわゆる …

no image

Javaでのログ出力 基礎編

Javaでのログ出力についてようわかってなかったので基礎から調べました。 Contents1 目的2 設定3 ソース4 出力5 リンク 目的 プログラムの実行過程を把握するため System.out. …