手を動かして学ぶ Java入門 (文字列クラス)
環境構築不要! ブラウザから直接コードを実行できます。
本記事では、Java の文字列(String) クラスについて学びます。
10分くらいで、さくっと終わる記事をめざしています。
シリーズ一覧
- シリーズ
- 手を動かして学ぶ Java入門 (Hello world 編)
- 手を動かして学ぶ Java入門 (数値と演算)
- 手を動かして学ぶ Java入門 (数値と変数)
- 手を動かして学ぶ Java入門 (コメントの書き方)
- 手を動かして学ぶ Java入門 (文と式の違い)
- 手を動かして学ぶ Java入門 (if文)
- 手を動かして学ぶ Java入門 (if-else文、if-elseif文)
- 手を動かして学ぶ Java入門 (文字列の連結)
- 手を動かして学ぶ Java入門 (while文)
- 手を動かして学ぶ Java入門 (break文)
- 手を動かして学ぶ Java入門 (continue文)
- 手を動かして学ぶ Java入門 (for文)
- 手を動かして学ぶ Java入門 (クラスの超基本)
- 手を動かして学ぶ Java入門 (クラス・メソッド)
- 手を動かして学ぶ Java入門 (クラス・フィールド)
- 手を動かして学ぶ Java入門 (クラス・コンストラクタ)
- 手を動かして学ぶ Java入門 (文字列クラス)
- 手を動かして学ぶ Java入門 (静的メソッド)
- 手を動かして学ぶ Java入門 (静的フィールド)
- 手を動かして学ぶ Java入門 (定数の定義)
- 手を動かして学ぶ Java入門 (クラス継承の超基本)
続きは近日公開予定!
はじめに
この記事は paiza.IO の「Online Java compiler」を利用しています。
2024/12/3 現在、上記環境の Java バージョンは 18 です。(paiza.IO利用ガイド)
実行したコードは paiza.IO で保存および公開されることがあります。
そのため、個人情報などの機密性の高い情報は、コードとして入力しないようにご注意ください。
詳細は paiza.IO の利用規約およびプライバシーポリシーをご確認ください。
概要
今までの学習では、いろいろなクラスを 自分で作成 してきました。
しかし、Java の開発環境には、標準で用意されている便利なクラスがたくさんあります。
それらを 標準ライブラリ や 標準API といいます。
例えば、
- ファイルを読み書きするためのクラス
- 日付や時刻を扱うクラス
- 数学的な計算をするクラス
- ネットワーク通信をするためのクラス
- などなど…
いろいろなクラスが用意されています。
標準ライブラリを使いこなせるかどうかも、プログラマの 大事なスキル です。
本記事では、標準ライブラリでもっともよく使うであろう
- 文字列(String)
クラスについて解説します。
文字列(String) クラス
今までの記事で解説してきた文字列は、
"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 クラスの 公式 ドキュメントです。
ありがたいことに日本語に訳されています。(実は、公式で翻訳されているのは日本語くらいだったりします)
ぜひ、上記引用の公式ドキュメントを、少しでもよいので読んでみてください。
それはもう、たくさんの便利なメソッドがあります。
今回は、String クラスのメソッドをいくつかピックアップしてご紹介します。
【ノート】
メソッドはたくさんありますが、すべてを覚える必要はありません。
大事なのは、目的にあったメソッドを
- いかに効率よく見つけられるか
ということです。
そのため、公式ドキュメントを読み慣れておくことは大事です。
(公式ドキュメントは、もっとも信用できる情報源です)
- 関連 : 公式ドキュメントを読む癖をつけよう
length (文字列の長さ)
length メソッドは、文字列の長さ(文字数) を 戻り値 で返します。
それでは、
"abcd"
という文字列の長さ(文字数) を取得してみましょう。
"abcd" の文字数は 4 ですね。
結果がどうなるか予想してから「実行(Ctrl-Enter)」ボタンを押してください。
(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)
いかがでしたでしょうか? 「出力」のところに
abcd
4
と表示されたら成功です。
charAt (指定の場所の文字を取得)
charAt メソッドは、指定した場所(インデックス) の文字を 戻り値 で返します。
戻り値は char 型となります。
インデックスは 0 から始まり、文字列の長さ -1 までの範囲です。
例えば、長さが 4 の
"abcd"
という文字列を考えてみましょう。
この文字列のインデックスの範囲は 0 ~ 3 になります。
実際にプログラムで確認してみましょう。
結果がどうなるか予想してから「実行(Ctrl-Enter)」ボタンを押してください。
(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)
いかがでしたでしょうか? 「出力」のところに
i = 0 : 文字 = a
i = 1 : 文字 = b
i = 2 : 文字 = c
i = 3 : 文字 = d
と表示されたら成功です。
toUpperCase (大文字に変換)
toUpperCase メソッドは、すべての文字を大文字に変換した結果を返します。
元になった文字列は変わりません。
それでは、
"Hello, world!"
という文字列を大文字に変換してみましょう。
結果がどうなるか予想してから「実行(Ctrl-Enter)」ボタンを押してください。
(表示がおかしいときは「コードの再読み込み」ボタンを押してみてください)
いかがでしたでしょうか? 「出力」のところに
元の文字列 : Hello, world!
変換結果 : HELLO, WORLD!
と表示されたら成功です。
補足 (サロゲート文字)
String クラスのメソッドには、サロゲート文字を考慮しないものがいくつかあります。
(本記事で紹介した length や charAt メソッドもそうです)
ただ、サロゲート文字については入門としては難しいので、本記事では説明を割愛しています。
下記の記事で、簡単にですがサロゲート文字について解説しています。
よろしければ、そちらもぜひご参照ください。
- 関連 : 文字列(String) の基本
応用問題
【問題】
まずは、下記のプログラムをそのまま「実行(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入門 (静的メソッド)」になります。
関連記事
- シリーズ
- 手を動かして学ぶ Java入門 (Hello world 編)
- 手を動かして学ぶ Java入門 (数値と演算)
- 手を動かして学ぶ Java入門 (数値と変数)
- 手を動かして学ぶ Java入門 (コメントの書き方)
- 手を動かして学ぶ Java入門 (文と式の違い)
- 手を動かして学ぶ Java入門 (if文)
- 手を動かして学ぶ Java入門 (if-else文、if-elseif文)
- 手を動かして学ぶ Java入門 (文字列の連結)
- 手を動かして学ぶ Java入門 (while文)
- 手を動かして学ぶ Java入門 (break文)
- 手を動かして学ぶ Java入門 (continue文)
- 手を動かして学ぶ Java入門 (for文)
- 手を動かして学ぶ Java入門 (クラスの超基本)
- 手を動かして学ぶ Java入門 (クラス・メソッド)
- 手を動かして学ぶ Java入門 (クラス・フィールド)
- 手を動かして学ぶ Java入門 (クラス・コンストラクタ)
- 手を動かして学ぶ Java入門 (文字列クラス)
- 手を動かして学ぶ Java入門 (静的メソッド)
- 手を動かして学ぶ Java入門 (静的フィールド)
- 手を動かして学ぶ Java入門 (定数の定義)
- 手を動かして学ぶ Java入門 (クラス継承の超基本)