オーダーメイドコース
icon
icon

JavaのStringBufferクラスの使い方を現役エンジニアが解説【初心者向け】

初心者向けにJavaのStringBufferクラスの使い方について解説しています。StringBufferクラスは文字列の操作を頻繁に行う場合に便利なクラスです。基本の書き方とStringBuilderクラスとの違いについて覚えておきましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

JavaのStringBufferクラスの使い方について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

Javaについてそもそもよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Java講座の内容をもとに作成しています。

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

StringBufferクラスの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

StringBufferクラスとは

文字列を連結したり、操作するためのクラスです。

Stringクラスでも文字列連結は可能ですが、何回も文字列連結を実行して一つの変数に格納したり、for文で繰り返し連結処理をする場合にはこちらのStringBufferクラスを使います。

Stringクラスとの違い

Stringクラスは固定長で変更不可能な文字列を格納します。一方で、StringBufferクラスは可変長で変更・操作可能な文字列を格納します。

また、Stringクラスでも「+」を使って文字列連結が可能ですが、この場合毎回新しいインスタンスが生成されるため、処理コストが高くなります。そのため、StringBufferという文字列操作のためのクラスが必要なんですね。

 

StringBufferクラスの使い方

以下の手順で使うことができます。

  1. まずnewしてインスタンスを生成
  2. appendメソッドを使って文字列を連結
  3. 連結が完了したら、Stringクラスの変数に格納する

実際に手順通りにコードを書いてみましょう。

Javaでhtmlコードを生成するサンプルプログラム

  // 手順1
  StringBuffer sb = new StringBuffer();
  // 手順2
  sb.append("<div>");
  sb.append("<p>");
  sb.append("こんにちは");
  sb.append("</p>");
  sb.append("</div>");
  // 手順3
  String htmlCode = sb.toString();
  // 処理結果の確認
  System.out.println(htmlCode);

実行結果

<div><p>こんにちは</p></div>

このようにStringBufferクラスを使うと、CSVファイルの1行データの生成やHTMLコードの生成時に非常に便利です。

 

[PR] 未経験からWebエンジニアを目指す方法とは

StringBufferクラスとStringBuilderクラスの違い

javaのバージョン1.5から、StringBuilderクラスが追加されました。StringBufferとの主な違いは、以下の2点です。

  • StringBuilderの方が処理速度が速い
  • StringBufferはスレッドセーフである

そのため、非同期処理などの特殊な状況でなければ、StringBuilderクラスを使う方式が処理が高速でおすすめです。

 

まとめ

文字列をいくつも連結する時は、StringBufferやStringBuilderクラスを使って効率的にプログラミングを進めましょう。

 

監修してくれたメンター

寺谷文宏

WEBアプリケーションエンジニアとして数多くのプロジェクトを経験し、フロントエンドからサーバーサイドまで総合的な開発を得意としています。

TechAchademyではフロントエンド、Javaコースを担当。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも、JavaやServletの技術を使ってWebアプリケーション開発を習得できる、オンラインブートキャンプを開催しています。

 

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。