Java のサイズと長さの違い

Mohammad Irfan 2023年10月12日
  1. Java の配列の length プロパティ
  2. Java の配列の .length の例
  3. Java の配列の size() メソッドの例
  4. Java の length() メソッドを使用して長さを見つける
  5. Java コレクション size() メソッド
  6. Java のサイズと長さの違い
Java のサイズと長さの違い

このチュートリアルでは、Java のサイズと長さの違いを紹介します。また、トピックを理解するのに役立つサンプルコードをいくつかリストしました。

Java には、size() メソッドと length プロパティがあります。初心者は、これらは多少同じように聞こえるので、これらは互換性があり、同じタスクを実行すると考えるかもしれません。Java では、サイズと長さは 2つの異なるものです。ここでは、2つの違いを学びます。

Java の配列の length プロパティ

配列は、同じタイプの固定数のデータを順序付けられた方法で格納します。Java のすべての配列には、その配列の要素に割り当てられたスペースを格納する長さフィールドがあります。これは、アレイの最大容量を見つけるために使用される定数値です。

  • このフィールドは、配列に存在する要素の数ではなく、(要素が存在するかどうかに関係なく)格納できる要素の最大数を提供することに注意してください。

Java の配列の .length の例

以下のコードでは、最初に長さ 7 の配列を初期化します。この配列の長さフィールドには、要素を追加していなくても 7 が表示されます。この 7 は、最大容量を示しています。

public class Main {
  public static void main(String[] args) {
    int[] intArr = new int[7];
    System.out.print("Length of the Array is: " + intArr.length);
  }
}

出力:

Length of the Array is: 7

次に、インデックスを使用して 3つの要素を配列に追加し、長さフィールドを出力してみましょう。それはまだ 7 を示しています。

public class Main {
  public static void main(String[] args) {
    int[] intArr = new int[7];
    intArr[0] = 20;
    intArr[1] = 25;
    intArr[2] = 30;
    System.out.print("Length of the Array is: " + intArr.length);
  }
}

出力:

Length of the Array is: 7

配列のサイズは固定されているため、長さフィールドは一定です。初期化中に配列に格納する要素の最大数(配列の容量)を定義する必要があり、この制限を超えることはできません。

Java の配列の size() メソッドの例

配列には size() メソッドはありません。コンパイルエラーが返されます。以下の例を参照してください。

public class SimpleTesting {
  public static void main(String[] args) {
    int[] intArr = new int[7];
    System.out.print("Length of the Array is: " + intArr.size());
  }
}

出力:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Cannot invoke size() on the array type int[]

	at SimpleTesting.main(SimpleTesting.java:7)

Java の length() メソッドを使用して長さを見つける

Java 文字列は単に文字の順序付けられたコレクションであり、配列とは異なり、length() メソッドがあり、length フィールドはありません。このメソッドは、文字列に存在する文字数を返します。

以下の例を参照してください。

public class Main {
  public static void main(String[] args) {
    String str1 = "This is a string";
    String str2 = "Another String";
    System.out.println("The String is: " + str1);
    System.out.println("The length of the string is: " + str1.length());
    System.out.println("\nThe String is: " + str2);
    System.out.println("The length of the string is: " + str2.length());
  }
}

出力:

The String is: This is a string
The length of the string is: 16

The String is: Another String
The length of the string is: 14

文字列で length プロパティを使用することはできず、length() メソッドは配列には適用できないことに注意してください。次のコードは、誤用した場合のエラーを示しています。

public class SimpleTesting {
  public static void main(String[] args) {
    String str1 = "This is a string";
    System.out.println("The length of the string is: " + str1.length);
  }
}

出力:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	length cannot be resolved or is not a field

	at SimpleTesting.main(SimpleTesting.java:7)

同様に、配列で文字列 length() メソッドを使用することはできません。

public class SimpleTesting {
  public static void main(String[] args) {
    int[] intArray = {1, 2, 3};
    System.out.println("The length of the string is: " + intArray.length());
  }
}

出力:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Cannot invoke length() on the array type int[]

	at SimpleTesting.main(SimpleTesting.java:7)

Java コレクション size() メソッド

size()java.util.Collections クラスのメソッドです。Collections クラスは、ArrayListLinkedListHashSetHashMap などのさまざまなコレクション(またはデータ構造)で使用されます。

size() メソッドは、コレクションに現在存在する要素の数を返します。配列の length プロパティとは異なり、size() メソッドによって返される値は一定ではなく、要素の数に応じて変化します。

Java の Collection Framework のすべてのコレクションは動的に割り当てられるため、要素の数はさまざまです。size() メソッドは、要素の数を追跡するために使用されます。

以下のコードでは、要素を含まない新しい ArrayList を作成すると、size() メソッドが 0 を返すことは明らかです。

import java.util.ArrayList;
import java.util.List;
public class Main {
  public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    System.out.println("The ArrayList is: " + list);
    System.out.println("The size of the ArrayList is: " + list.size());
  }
}

出力:

The ArrayList is: []
The size of the ArrayList is: 0

ただし、この値は、要素を追加または削除すると変化します。3つの要素を追加した後、サイズは 3 に増加します。次に、2つの要素を削除すると、リストのサイズは 1 になります。

import java.util.ArrayList;
import java.util.List;
public class Main {
  public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    System.out.println("The ArrayList is: " + list);
    System.out.println("The size of the ArrayList is: " + list.size());
    list.add(20);
    list.add(40);
    list.add(60);
    System.out.println("\nAfter adding three new elements:");
    System.out.println("The ArrayList is: " + list);
    System.out.println("The size of the ArrayList is: " + list.size());
    list.remove(0);
    list.remove(1);
    System.out.println("\nAfter removing two elements:");
    System.out.println("The ArrayList is: " + list);
    System.out.println("The size of the ArrayList is: " + list.size());
  }
}

出力:

The ArrayList is: []
The size of the ArrayList is: 0

After adding three new elements:
The ArrayList is: [20, 40, 60]
The size of the ArrayList is: 3

After removing two elements:
The ArrayList is: [40]
The size of the ArrayList is: 1

Java のサイズと長さの違い

サイズと長さは同じコンテキストで使用できる場合もありますが、Java ではまったく異なる意味を持ちます。

配列の length フィールドは、配列の最大容量を示すために使用されます。最大容量とは、そこに格納できる要素の最大数を意味します。このフィールドは、配列に存在する要素の数を考慮せず、一定のままです。

文字列の length() メソッドは、文字列に存在する文字数を示すために使用されます。コレクションフレームワークsize() メソッドは、そのコレクションに現在存在する要素の数を表示するために使用されます。コレクションには動的なサイズがあるため、size() の戻り値は異なる場合があります。