Javaのlengthとlength()の違いを徹底解説!正しい使い分けのポイント
Javaには、配列のサイズを取得するlengthと、文字列の長さを取得するlength()という、名前がよく似た2つの仕組みが存在します。初心者の方は混同しがちですが、この2つは本質的に異なるものです。lengthは配列のインスタンス変数(フィールド)である一方、length()はStringクラスのメソッドです。それぞれの特徴と使い方を詳しく見ていきましょう。
length:配列の長さを表すフィールド
- 配列はオブジェクトであり、同じ型の値を固定された個数だけ格納します。
- 配列のlength変数は配列の長さ、すなわち配列に格納されている要素数を返します。
- 配列は一度初期化するとその長さを後から変更することはできません。そのため、length変数に直接アクセスするだけで配列の長さを取得できます。
- length変数は配列専用であり、Stringなどの他のオブジェクトに対しては使用できません。
コード例
public class ArrayLengthTest {
public static void main(String args[]) {
int array[] = {1, 2, 3, 4, 5, 6, 7};
System.out.println("Length of an array is: " + array.length);
}
}
実行結果
Length of an array is: 7
上記の例では、int型の配列に7つの要素を格納しているため、array.lengthは「7」を返します。括弧 () を付けずに、フィールドとして直接参照している点に注目してください。
length():文字列の長さを返すメソッド
- length()はStringクラスのメソッドです。
- length()は文字列オブジェクトの長さ、つまりオブジェクト内に格納されている文字数を返します。
- Stringクラスでは、内部のデータ構造を外部に公開せず、メソッドを通じて長さを取得できるように設計されています。これはオブジェクト指向におけるカプセル化の考え方に基づいています。
- Stringクラスは内部的にchar[]配列を使用していますが、この配列は外部からはアクセスできないよう隠蔽されています。
コード例
public class StringLengthMethodTest {
public static void main(String args[]) {
String str = "Welcome to Tutorials Point";
System.out.println("Length of String using length() method is: " + str.length());
}
}
実行結果
Length of String using length() method is: 26
この例では、文字列「Welcome to Tutorials Point」に含まれる26文字(スペースも1文字としてカウント)が返されます。こちらはメソッドなので、必ず括弧 () を付けて呼び出します。
まとめ:lengthとlength()の比較表
| 項目 | length | length() |
|---|---|---|
| 対象 | 配列 | 文字列(String) |
| 種類 | インスタンス変数(フィールド) | メソッド |
| 呼び出し方 | array.length | str.length() |
| 戻り値 | 配列の要素数 | 文字列の文字数 |
このように、配列ならlength(フィールド)、文字列ならlength()(メソッド)と覚えておくと間違いありません。コンパイルエラーの原因にもなりやすいポイントなので、しっかり区別して使い分けましょう。
-
JavaのJFrameとJDialogの違いとは?特徴と使い分けを解説
JavaのSwingには、ウィンドウを表示するためのトップレベルコンテナとしてJFrameとJDialogが用意されています。どちらもよく似た役割を持ちますが、動作や用途には重要な違いがあります。この記事では、それぞれの特徴をサンプルコードとともに解説し、最後に使い分けのポイントをまとめます。 JFrameとは フレームに追加されたコンポーネントは「コンテンツ」として扱われ、contentPaneによって管理されます。JFrameにコンポーネントを追加する際は、フレーム本体ではなくcontentPaneに対して追加する必要があります。 JFrameは、タイトル、境界線、(オプションで)メニュ
-
JavaのGridLayoutとGridBagLayoutの違いを徹底解説!特徴と使い分けのポイント
JavaのAWT/Swingには複数のレイアウトマネージャーが用意されていますが、その中でもGridLayoutとGridBagLayoutは、コンポーネントを格子状(グリッド)に配置するという点でよく似ています。しかし、両者には重要な違いがあります。 GridLayoutは、すべてのコンポーネントを矩形のグリッド内に配置し、領域を同じサイズの長方形に分割して、各コンポーネントをそれぞれのセルの中に収めます。一方、GridBagLayoutは柔軟性の高いレイアウトマネージャーであり、コンポーネントのサイズを揃えることなく、縦方向・横方向に整列させて配置できます。各GridBagLayoutオブ