Stringクラスを新人エンジニアに解説

こんにちは。ゆうせいです。
今回は、JavaのStringクラスについて詳しく解説します!Stringクラスは、文字列を扱うための非常に重要なクラスです。Javaでは文字列操作が頻繁に行われるので、使い方をしっかり理解しておきましょう。


Stringクラスとは?

JavaのStringクラスは、文字列を扱うためのクラスで、不変(immutable)なオブジェクトとして設計されています。不変とは、一度作成した文字列が変更できないという意味です。

例えるなら…

Stringクラスは「ラベル」のようなものです。一度貼り付けたラベルの内容は直接変更できず、新しいラベルを作り直すような仕組みです。


Stringの作成

1. 文字列リテラルで作成

一番簡単な方法は、ダブルクォート""で囲むことです。

String str1 = "こんにちは";
System.out.println(str1);

2. newキーワードで作成

newキーワードを使って明示的に作成することもできます。

String str2 = new String("こんにちは");
System.out.println(str2);

文字列リテラルを使う方が効率的なので、通常はこちらを推奨します。


Stringの主なメソッド

Stringクラスには、文字列を操作するための便利なメソッドがたくさん用意されています。いくつか重要なものを見ていきましょう。

1. 文字列の長さを取得

length()メソッドを使って、文字列の長さを取得できます。

String str = "Java";
System.out.println("文字列の長さ: " + str.length()); // 結果: 4


2. 特定の文字を取得

charAt()メソッドを使うと、文字列の特定の位置にある文字を取得できます。

String str = "Java";
System.out.println("2番目の文字: " + str.charAt(1)); // 結果: 'a'


3. 部分文字列を取得

substring()メソッドを使って、文字列の一部を切り出せます。

String str = "Hello, World!";
System.out.println("部分文字列: " + str.substring(7, 12)); // 結果: "World"


4. 文字列の結合

concat()メソッドや+演算子を使って文字列を結合できます。

String str1 = "Hello";
String str2 = "World";
System.out.println(str1.concat(", ").concat(str2)); // 結果: "Hello, World"
System.out.println(str1 + ", " + str2);             // 結果: "Hello, World"


5. 文字列の比較

equals()メソッドを使うと、文字列を比較できます。

String str1 = "Java";
String str2 = "java";

System.out.println(str1.equals(str2));          // 結果: false(大文字小文字を区別)
System.out.println(str1.equalsIgnoreCase(str2));// 結果: true(大文字小文字を無視)


6. 文字列の検索

特定の文字列や文字が含まれているかを確認する方法です。

indexOf()

文字列中の最初の出現位置を返します。

String str = "Hello, World!";
System.out.println("位置: " + str.indexOf("World")); // 結果: 7

contains()

文字列に特定の部分文字列が含まれているかを確認します。

System.out.println(str.contains("World")); // 結果: true


7. 大文字・小文字の変換

文字列を大文字や小文字に変換できます。

String str = "Java";
System.out.println(str.toUpperCase()); // 結果: "JAVA"
System.out.println(str.toLowerCase()); // 結果: "java"


8. 文字列の置換

replace()メソッドで特定の文字や文字列を別のものに置換できます。

String str = "I love Java!";
System.out.println(str.replace("Java", "Python")); // 結果: "I love Python!"


9. 空文字・nullのチェック

文字列が空(長さ0)やnullであるかを確認します。

isEmpty()

空文字列であるかをチェックします。

String str = "";
System.out.println(str.isEmpty()); // 結果: true

isBlank()(Java 11以降)

空白文字(スペースなど)を含む場合もチェックします。

String str = "   ";
System.out.println(str.isBlank()); // 結果: true


Stringの特徴と注意点

1. 不変性(Immutable)

Stringは不変(immutable)です。一度作成された文字列オブジェクトは変更できません。例えば以下のようなコード:

String str = "Hello";
str.concat(" World");
System.out.println(str); // 結果: "Hello"(元の文字列は変更されない)

この場合、新しい文字列オブジェクトは作られますが、元のstrには影響しません。


2. パフォーマンスに注意

頻繁に文字列を操作する場合は、Stringの不変性が原因で多くのオブジェクトが作られ、メモリを消費します。その場合は、StringBuilderStringBufferを使う方が効率的です。


Stringの活用例

1. 文字列の逆順表示

String str = "Hello, World!";
String reversed = new StringBuilder(str).reverse().toString();
System.out.println("逆順: " + reversed); // 結果: "!dlroW ,olleH"


2. 単語の分割

split()メソッドで文字列を分割できます。

String str = "apple,banana,cherry";
String[] fruits = str.split(",");

for (String fruit : fruits) {
    System.out.println(fruit);
}


3. フォーマット文字列の生成

String.format()を使うと、テンプレートに値を埋め込むことができます。

String name = "Alice";
int age = 25;

String message = String.format("名前: %s, 年齢: %d", name, age);
System.out.println(message); // 結果: "名前: Alice, 年齢: 25"


練習問題

問題:文字列操作プログラム

  1. ユーザーから文字列を入力。
  2. 入力された文字列の長さを表示。
  3. その文字列を逆順に表示。
  4. 特定の文字(例: "a")が何回含まれているかを数える。

ヒント

  • length()で長さを取得。
  • StringBuilderreverse()を使用。
  • ループで文字を1つずつチェック。

まとめと次のステップ

Stringクラスは、Javaプログラムで最も頻繁に使われるクラスの1つです。不変性を理解し、便利なメソッドを活用することで、文字列操作を効率的に行うことができます。次は以下を学ぶとさらに理解が深まります:

  1. StringBuilderとStringBuffer:文字列を効率的に操作。
  2. 正規表現(Regex):複雑なパターンで文字列を処理。
  3. 文字列フォーマットとパース:文字列と数値の相互変換。

ぜひ試してみてください!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。