Javaで文字列の文字数を調べたいという機会は結構あるはずだ。
Stringクラスのlengthメソッドを使えば簡単に文字数をカウントできる。このページではlengthメソッドについてまとめたので参考にしてほしい。
文字数を求める(length)
lengthメソッド
文字列の長さを求めるにはStringクラスのlengthメソッドが使える。使い方は次の通り簡単だ。
文字列.length( )
戻り値の型 |
int |
内容 |
この文字列の長さを返する。 |
length()は文字の長さを返す。ここでいう長さとは、バイト数ではなく文字数のことだ。つまり半角、全角関係なく文字列の文字数を返してくれる。
サンプルコード
ではサンプルコードを見てみよう。
1 2 3 4 5 6 7 8 |
public class StringSample5 { public static void main(String[] args) { String message ; //[1] message = "おはようございます。気持ちのいい朝です。";//[2] int num = message.length();//[3] System.out.println("「" + message + "」の文字数は" + num + "です。" ); //[4] } } |
実行結果
1 |
「おはようございます。気持ちのいい朝です。」の文字数は20です。 |
サンプルコードの説明
- [1] String型の変数messageの宣言
- [2] 変数messageの初期化。文字列を代入。
- [3] 変数numに.length()の結果である文字数を代入。
- [4] 変数numの値を出力。
という感じだ。とてもシンプルで使いやすい。
処理の繰り返しに使われるサンプルコード
単純に文字の数を調べたい場合もあるが、繰り返し処理の条件式で、lengthメソッドを使用して文字の長さを取得し、その文字数だけ処理を繰り返す場合に使われることも多い。
1 2 3 4 5 6 7 8 9 10 |
public class StringSample51 { public static void main(String[] args) { String message ; //[1] message = "おはようございます。気持ちのいい朝です。";//[2] System.out.println("「" + message + "」の文字数は" + message.length() + "です。" ); //[3] for (int i = 1; i <= message.length(); i++) {//[4] System.out.println(i + "回目の処理です。" ); } } } |
実行結果
実行結果は次の通りだ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
「おはようございます。気持ちのいい朝です。」の文字数は20です。 1回目の処理です。 2回目の処理です。 3回目の処理です。 4回目の処理です。 5回目の処理です。 6回目の処理です。 7回目の処理です。 8回目の処理です。 9回目の処理です。 10回目の処理です。 11回目の処理です。 12回目の処理です。 13回目の処理です。 14回目の処理です。 15回目の処理です。 16回目の処理です。 17回目の処理です。 18回目の処理です。 19回目の処理です。 20回目の処理です。 |
サンプルコードの説明
サンプルコードの説明も軽くしておこう。
- [1] String型の変数messageの宣言
- [2] 変数messageの初期化。文字列を代入。
- [3].length()の結果である文字数を出力。
- [4] messageの文字数分、繰り返し処理を行う。
lengthとlength()の違い
配列で使うlengthとは違うので注意をしよう。
- 配列.lengthは配列の要素の数を返す。
- 文字列.length()は文字列の文字数を返す。
似ているようで違うlengthとlength()の違いはフィールドとメソッドの違いだ。
lengthはフィールド、length()はメソッドである。
簡単にいうなら、lengthは配列の要素の数を入れる箱であり、length()は文字列の文字数を数えて返す処理をする機能である。
まとめ
このページではJavaで文字数をカウントするlengthメソッドについてお伝えした。
簡単なメソッドなのですぐに使い方はわかるだろう。参考にしていただければと思う。
StringSample51クラスの実行結果は1~20ではなく、1~19だと思います。
実行結果に合わせるのであれば、
for (int i = 1; i < message.length(); i++) {//[4]
の条件
i < message.length()
ではなく、
i <= message.length()
だと思います。
ご指摘いただきありがとうございます。
該当箇所を修正いたしました。
引き続き、ご愛読のほど、よろしくお願いいたします。