広告

手を動かして学ぶ Java入門 (文字列クラス)

環境構築不要! ブラウザから直接コードを実行できます。
本記事では、Java の文字列(String) クラスについて学びます。

10分くらいで、さくっと終わる記事をめざしています。


シリーズ一覧

続きは近日公開予定!

はじめに

この記事は paiza.IO の「Online Java compiler」を利用しています。
2024/12/23 現在、上記環境の Java バージョンは 18 です。(paiza.IO利用ガイド)

実行したコードは paiza.IO で保存および公開されることがあります。
そのため、個人情報などの機密性の高い情報は、コードとして入力しないようにご注意ください。

詳細は paiza.IO の利用規約およびプライバシーポリシーをご確認ください。

概要

プログラミング言語における標準ライブラリとは、通例的に言語の各実装に備えられているライブラリである。

今までの学習では、いろいろなクラスを 自分で作成 してきました。
しかし、Java の開発環境には、標準で用意されている便利なクラスがたくさんあります。

それらを 標準ライブラリ標準API といいます。

例えば、

  • ファイルを読み書きするためのクラス
  • 日付や時刻を扱うクラス
  • 数学的な計算をするクラス
  • ネットワーク通信をするためのクラス
  • などなど…

いろいろなクラスが用意されています。

標準ライブラリを使いこなせるかどうかも、プログラマの 大事なスキル です。

本記事では、標準ライブラリでもっともよく使うであろう

  • 文字列(String)

クラスについて解説します。

文字列(String) クラス

Stringクラスは文字列を表します。Javaプログラム内の"abc"などのリテラル文字列はすべて、このクラスのインスタンスとして実行されます。

今までの記事で解説してきた文字列は、

"Hello, world!"

という感じで、" ... " とダブルクォーテーションで囲って使っていました。

実は、この文字列の正体は String クラスです。
その証拠に String 型の変数に代入できます。

// String型の変数へ代入可能
String str = "Hello, world!";

プログラムで実際の動きを確認してみましょう。
コードは変更せずに、そのまま「実行(Ctrl-Enter)」ボタンを押してください。

(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)

いかがでしたでしょうか? 「出力」のところに

Hello, world!

と表示されたら成功です。


さて、クラスを学んだみなさんの中には、

  • 文字列はなぜ new 演算子を使わなくてもよいのだろう?

と疑問に感じるかたもいるかもしれません。

例えば、

// 間違った例
String str = new "Hello, world!";

こんな感じをイメージするかもしれません。
ただ、これは明確に間違いです。コンパイルエラーとなります。

もしくは、String クラスなんだし、

String str = new String("Hello, world!");

こんな感じをイメージするかもしれません。

こちらは間違いではありません。コンパイルエラーも起きません。
しかし、一般的にはおすすめされていません。

次のように new を使わずに書くのがおすすめです。

// おすすめの書き方
String str = "Hello, world!";

では、なぜ new が不要なのかというと …
それは Java 言語の仕様としてそう決められているからです。(身も蓋もないですね…)

便利なメソッド

Stringクラスは文字列を表します。Javaプログラム内の"abc"などのリテラル文字列はすべて、このクラスのインスタンスとして実行されます。

上記引用のページは、String クラスの 公式 ドキュメントです。
ありがたいことに日本語に訳されています。(実は、公式で翻訳されているのは日本語くらいだったりします)

ぜひ、上記引用の公式ドキュメントを、少しでもよいので読んでみてください。
それはもう、たくさんの便利なメソッドがあります。

今回は、String クラスのメソッドをいくつかピックアップしてご紹介します。

【ノート】

メソッドはたくさんありますが、すべてを覚える必要はありません。
大事なのは、目的にあったメソッドを

  • いかに効率よく見つけられるか

ということです。

そのため、公式ドキュメントを読み慣れておくことは大事です。
(公式ドキュメントは、もっとも信用できる情報源です)

length (文字列の長さ)

public int length()
この文字列の長さを戻します。 長さは文字列内のUnicodeコード単位の数に等しくなります。

length メソッドは、文字列の長さ(文字数) を 戻り値 で返します。

それでは、

"abcd"

という文字列の長さ(文字数) を取得してみましょう。
"abcd" の文字数は 4 ですね。

結果がどうなるか予想してから「実行(Ctrl-Enter)」ボタンを押してください。

(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)

いかがでしたでしょうか? 「出力」のところに

abcd
4

と表示されたら成功です。

charAt (指定の場所の文字を取得)

public char charAt(int index)
指定されたインデックスのchar値を返します。 インデックスの範囲は0からlength() - 1までです。

charAt メソッドは、指定した場所(インデックス) の文字を 戻り値 で返します。
戻り値は char 型となります。

インデックスは 0 から始まり、文字列の長さ -1 までの範囲です。

例えば、長さが 4 の

"abcd"

という文字列を考えてみましょう。
この文字列のインデックスの範囲は 0 ~ 3 になります。

charAtイメージ図


実際にプログラムで確認してみましょう。
結果がどうなるか予想してから「実行(Ctrl-Enter)」ボタンを押してください。

(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)

いかがでしたでしょうか? 「出力」のところに

i = 0 : 文字 = a
i = 1 : 文字 = b
i = 2 : 文字 = c
i = 3 : 文字 = d

と表示されたら成功です。

toUpperCase (大文字に変換)

public String toUpperCase()
デフォルト・ロケールのルールを使って、このString内のすべての文字を大文字に変換します。

toUpperCase メソッドは、すべての文字を大文字に変換した結果を返します。
元になった文字列は変わりません

それでは、

"Hello, world!"

という文字列を大文字に変換してみましょう。

結果がどうなるか予想してから「実行(Ctrl-Enter)」ボタンを押してください。

(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)

いかがでしたでしょうか? 「出力」のところに

元の文字列 : Hello, world!
変換結果   : HELLO, WORLD!

と表示されたら成功です。


補足 (サロゲート文字)

サロゲートペア(代用対)は16ビットUnicodeの領域1,024文字分を2つ使い(前半 U+D800 〜 U+DBFF、後半 U+DC00 〜 U+DFFF)、各々1個ずつからなるペアで1,024 × 1,024 = 1,048,576文字を表す。

String クラスのメソッドには、サロゲート文字を考慮しないものがいくつかあります。
(本記事で紹介した lengthcharAt メソッドもそうです)

ただ、サロゲート文字については入門としては難しいので、本記事では説明を割愛しています。

下記の記事で、簡単にですがサロゲート文字について解説しています。
よろしければ、そちらもぜひご参照ください。

応用問題

【問題】

まずは、下記のプログラムをそのまま「実行(Ctrl-Enter)」してみましょう。
「出力」には

ABC XYZ

と表示されたはずです。

この表示を、

abc xyz

になるようにしてください。

書き換える場所は、

String str2 = str1.toUpperCase();
                   ^^^^^^^^^^^ <--- この部分!

上記の toUpperCase メソッドの呼び出し部分です。

【ヒント】

大文字に変換するには toUpperCase メソッドを使いました。
では、小文字に変換するには…?

下記の公式 APIドキュメントから、小文字に変換するメソッドを探してみてください。
メソッドの名前は toUpperCase に似ています。


それでは、指定の場所のコードを書き換えて「実行(Ctrl-Enter)」してみましょう。

(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)

無事に、

abc xyz

と出力されましたでしょうか?

もし解けなかった場合は、下記の回答例をご参照ください。

回答例

【コード】

public class Main {
    public static void main(String[] args) {

        String str1 = "abc XYZ";

        // toUpperCase を書き換えてください。
        String str2 = str1.toLowerCase();
        System.out.println(str2);
    }
}

【出力】

abc xyz

まとめ

本記事では、文字列(String) クラスについて解説しました。

String クラスは、Java の 標準ライブラリ の1つです。
便利なメソッドもたくさんあります。

プログラミングの効率アップのためにも、ぜひ有効に使いこなしたいですね。

次回は「手を動かして学ぶ Java入門 (静的メソッド)」になります。


関連記事

ページの先頭へ