Javaでデータの長さ(文字数・要素数)を取得する書き方は、対象によって異なるのがポイントです。文字列は length()(メソッド)、配列は length(フィールド)、コレクションは size() と、それぞれ違います。この記事で正しい使い分けと、文字数を数えるときの注意点を解説します。
この記事の結論:文字列は
str.length()(メソッド・カッコあり)、配列は arr.length(フィールド・カッコなし)、List/Set/Mapは col.size()。絵文字や一部の漢字では length() が見た目より大きくなる点に注意します。文字列の長さ:length() メソッド
文字列の文字数は length() メソッドで取得します。空白も1文字として数えます。
String.length()
String str = "Hello, World!"; System.out.println(str.length()); // 13(空白も含む)
配列の長さ:length フィールド
配列の要素数は length フィールドで取得します。カッコは付けません(メソッドではなくフィールド)。
配列.length(() なし)
int[] array = {1, 2, 3, 4, 5};
System.out.println(array.length); // 5
// 2次元配列は「行数」と「各行の列数」
int[][] grid = {{1, 2, 3}, {4, 5, 6}};
System.out.println(grid.length); // 2(行数)
System.out.println(grid[0].length); // 3(1行目の列数)
length()・length・size()の違い
| 対象 | 書き方 | 種類 |
|---|---|---|
| 文字列(String) | str.length() |
メソッド(()あり) |
| 配列 | arr.length |
フィールド(()なし) |
| List / Set / Map | col.size() |
メソッド(()あり) |
よくある間違い:配列に
arr.length()(→エラー、フィールドなので()不要)、文字列に str.length(→エラー、メソッドなので()必要)。「配列だけ () なし」と覚えると混乱しません。注意:絵文字や一部の漢字でlength()が大きくなる
厳密には String.length() が返すのは「UTF-16のコード単位の数」であって「見た目の文字数」ではありません。絵文字や一部の珍しい漢字(基本多言語面の外にある文字)は1文字で2カウントされます(サロゲートペア)。
見た目の文字数を数える(codePointCount)
// 絵文字や一部の漢字は length() で 2 と数えられることがある String emoji = "..."; // 例: 絵文字1個を含む文字列 // emoji.length(); // 見た目より大きい値になる場合がある // 「文字(コードポイント)の数」を数えるには codePointCount int count = emoji.codePointCount(0, emoji.length()); System.out.println(count); // 見た目に近い文字数
通常の日本語(ひらがな・カタカナ・常用漢字など)は1文字=1カウントなので
length() で問題ありません。絵文字や記号、珍しい漢字まで正確に数えたい場合のみ codePointCount() を使います。長さ0(空)かどうかの判定
「空かどうか」を調べるなら、長さを0と比べるより isEmpty() が読みやすいです(文字列・コレクションで使えます。配列は length == 0)。
isEmptyで空判定
String s = "";
System.out.println(s.isEmpty()); // true
int[] arr = {};
System.out.println(arr.length == 0); // true(配列はisEmptyが無い)
よくある質問(FAQ)
Q文字列はlength、配列はlength()でしたっけ?
A逆です。文字列は
length()(メソッド・カッコあり)、配列は length(フィールド・カッコなし)です。List/Set/Mapは size() を使います。Qlength()が見た目の文字数と合いません。
A
length() はUTF-16のコード単位を数えるためです。絵文字や一部の珍しい漢字は1文字で2カウントされます。見た目の文字数は str.codePointCount(0, str.length()) で取得してください。Q2次元配列の長さはどう取りますか?
A
grid.length が行数、grid[0].length が1行目の列数です。行ごとに列数が異なる配列(ジャグ配列)もあるため、各行の長さは grid[i].length で個別に取得します。Q空かどうかの判定は?
A文字列・コレクションは
isEmpty() が読みやすく推奨です。配列には isEmpty() が無いので arr.length == 0 で判定します。まとめ
Javaで長さを取得するポイントを整理します。
- 文字列は
length()(メソッド)、配列はlength(フィールド) - List/Set/Mapは
size() - 「配列だけ
()なし」と覚える - 絵文字・一部の漢字は
length()で2カウント →codePointCount()で見た目の文字数 - 空判定は
isEmpty()(配列はlength == 0)
関連として、サイズ・要素数の取得方法(size/length)・文字列の末尾から任意の桁数を取得する方法・リストが空でないか確認して使う方法もあわせて読むと、Javaの長さ・サイズ処理に強くなれます。

