文字列

Java StringBuilderの使い方・文字列の連結

Java StringBuilderの
使い方・文字列の連結

2つ以上の文字列をつなぐことを、
文字列の連結(conacation)といいます。

最も簡単な方法は、
Stringクラスで+演算子を用いる方法です。

SPONSORED LINK

ただしStringクラスでは、問題点がある

上記のように問題なく処理が動き、
実行結果として出力されていますが、
Stringクラスの文字連結には
問題点があります。

それはStringクラスのインスタンスの
不変性にあります。

String インスタンスが保持する文字列情報は、
インスタンス化した際に初期化されるので、
以後二度と変化することはない。(値の変更不可)

インスタンスについての詳細な説明はここから

Stringクラスに限らず
「インスタンス化の後に内容変更一切なし」
のよう設計されたクラスのことを 
不変であると言います。

上記のようにStringインスタンスは
中身を書き換える事ができるように見えます。

しかし実際は下記のようなことが起きています。

Helloという文字列情報を持った
Stiringインスタンスが大きくなり、
“HelloWord”という情報を持つ
ということは決してありません。

演算子にによる(+)連結が行われた場合は、
古いインスタンスは捨てられ
連結後の情報を持つ新しいインスタンが
newにより生成されることになります。

簡潔に説明すると
+演算子で処理した回数の文字連結は、
内部でその回数分のnewを行っています。

newによるインスタンス生成は計算などに比べて
JVMに大きな負担がかかる原因となる為
何百回、何千回、何万回と大きくなるにつれて
全体として遅い処理になってしまいます。

その問題を解決するために
StringBuilderを使います。

SPONSORED LINK


StringBuilderの使い方

new String(sb)や
String.valueOf(sb)でもString変換が可能です。

toString メソッドを使って文字列ビルダから
文字列を取得するのは、処理が高速になるので
一般的に推奨されています。

StringBuilderやStringBufferは
可変なクラスとして設計されています。

newを使用することなくappend()メソッドで
文字列を追記していく設計になっているので
高速に処理をすることが可能です。

StringBufferクラスの利用方法はStringBuilderと全く同じになります。

  • String: 不変
  • StringBuilder:可変
  • StringBuffer: 可変


StringBuilderとStringBufferの違いとは?

StringBuilderとStringBufferの違いは、
並列処理を利用しているか
利用していないかの場合に使い分けをします。

並列処理とは、複数の処理を
同時に行うためのJavaのしくみです。

  • StringBuilder:並列処理 ✕
  • StringBuffer: 並列処理 ○

並列処理を利用している場合に、
StringBuilderクラスを利用すると
不具合になる可能性があるので
代わりにStringBufferクラスを使用します。

SPONSORED LINK

今の年収に満足していますか?



同じ契約金で業務委託していても

在籍している会社によって給料が違います。


今と同じスキル・業務内容でも

年収が変わるということです。


さらに以下を考慮すると

より年収アップにつながります。


  • スキルセットと需要
  • 経験と実績
  • 業界や地域の市場価値
  • 転職時の交渉スキル


転職先の企業の給与体系や

業界の標準的な給与水準を調査し、

転職前後の給与を比較することができます。


給与のみでなく、

福利厚生やキャリア成長の機会、

ワークライフバランスなどの要素も

総合的に考慮することが重要です。


こちらで転職・年収アップできました👇【エントリーは簡単30秒!】


【ITエンジニア特化LP】転職エージェント





ITエンジニアの知識を効率よく身につけるには?


Kindle Unlimitedは、Amazonが提供する

月額定額制の電子書籍サービスを活用します。


また、Kindle Unlimitedには、

体験版が提供されています。


体験版では、一定期間(通常は30日間)に限り、

Kindle Unlimitedのサービスを

無料で利用することができます。

1.豊富な書籍のラインナップ

Kindle Unlimitedには、

幅広いジャンルの書籍が

数十万冊以上含まれています。


小説、ビジネス書、自己啓発書、

学術書、漫画など、

様々なテーマや興味に合わせて

多彩な選択肢があります。


2.サービスの内容を体験

体験版では、Kindle Unlimitedの

全ての機能を使いながら、

豊富な書籍のラインナップや

読書体験を体験することができます。


自身の読書の好みや

利用頻度に合うかどうかを確認できます。


3.解約が可能

体験版期間中に

Kindle Unlimitedのサービスに

満足しなかった場合、

期限内に解約することができます。


その場合、追加料金はかかりません。



ここで利用できました👇【登録は簡単30秒!】


Kindle Unlimitedの無料体験を始める



Kindle Unlimitedでは

さまざまなジャンルの書籍が提供されています。


ITエンジニアとしてスキルを向上させたり

新しい技術を学んだりする際に、

Kindle Unlimitedは

便利な資源となるのでおすすめです。


SPONSORED LINK

数の定義・数の構成について前のページ

JUnit 入門・基本的な使い方を解説次のページ

ピックアップ記事

  1. Java クラスのインスタンス化・初期化とは?
  2. Java 9が正式リリース
  3. Java入門 JavaプラットフォームやJava言語の仕組み

関連記事

  1. 文字列

    Java 文字列をequalsで比較判定する方法

    文字列を比較する際に使用するequalsメソッドについて解説し…

  2. 文字列

    Java String型とDate型の変換・Calendarの関係性

    現場でも使用頻度が非常に高い日付を扱ったソースについて解説して…

  3. 文字列

    Java 文字列を分割後(split)にリスト化(List)する方法も解説

    こちらの記事で文字列を分割後(split)にリスト化(List)す…

  4. 文字列

    Java yyyyMMddからyyyy/MM/ddへ変換して日付判定する方法

    データベースから日付情報A(char長8)の文字列を取得して日…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


Recommended Article

Pickup

  1. JUnit

    JUnit 入門・基本的な使い方を解説
  2. コマンド

    Linuxコマンド【rmdir】空の既存ディレクトリを削除するコマンド
  3. 文字列

    Apache Commons Lang 3 をプロジェクトに追加してString…
  4. Basic

    Java 命名規則やルールを解説!フェーズの参考情報(パッケージ,クラス,メソッ…
  5. 配列

    Java 可変長引数を使用して動的な数の引数をメソッドに渡す
PAGE TOP
Translate »

Copyrighted Image