Javaの配列の長さ


101

以下に示すように配列を宣言しました:

int[] arr = new int[10];

次に、次の値を配列に割り当てました。

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;

次に、整数変数を宣言して初期化しました。

int arrayLength = arr.length;

これは実際のサイズを見つけるのに役立ちますが、配列の論理サイズを見つける方法はありますか?

回答:


86

割り当てられたサイズが含まれます10。割り当てられていないインデックスは、デフォルト値が含まれます0ためにint


3
はい、配列は静的メモリ割り当てです。
Ramon Saraiva、2012年

3
javadocを表示できますか?この「長さ」プロパティがどこにあるのかわかりません。
フィリップレゴ2018


71

まず、lengthはプロパティなので、arr.lengthではなくになりarr.length()ます。

そして、宣言されたサイズである10を返します。明示的に宣言しない要素は0で初期化されます。


配列型long [] Java(67108980)でlength()を呼び出せません
Alessandro

22

配列の長さを見つけるにAは、lengthプロパティを使用する必要があります。それはA.length使用していない、A.length()その主に文字列に関連するオブジェクトのサイズに使用します。

ここに画像の説明を入力してください

lengthプロパティは、初期化中に常にアレイに割り当てられた合計容量を示します。

これらの種類の問題が発生した場合、それを実行するのが簡単な方法です。ハッピープログラミング!


6

配列は静的メモリ割り当てであるため、整数の配列を初期化すると、次のようになります。

int[] intArray = new int[15];

埋められるインデックスの数に関係なく、長さは常に 15になります。

また、整数の配列を初期化するとすべてのインデックスが「0」で埋められます。


5

Javaでは、「実際の」サイズと「論理的な」サイズは同じです。ランタイムは、割り当て時にすべての配列スロットをデフォルト値で埋めます。だから、あなたのa10が含まれています。


5

この場合、arr.lengthは、割り当てた配列のサイズである10を返します。これは固定長配列であるため、論理サイズは実際には適用されません。

配列を初期化すると:

int[] arr = new int[10];

Javaは10個の要素を持つ配列を作成し、これらすべてを0に初期化します。これと他のプリミティブ型の初期値の詳細については、Java言語仕様を参照してください。


4
int[] arr = new int[10];

arrあるintサイズを有するタイプアレイ1010要素の配列です。デフォルトで配列を初期化しない場合、配列要素にはデフォルト値が含まれます。int配列の場合、デフォルト値は0です。

lengthは、配列に適用できるプロパティです。
ここでarr.length与え10ます。


3

`

int array [] = new int [3]; array.length;

ここで、メモリ空間が3の配列を作成しました...これが実際の外観です

0位1位2位...........>インデックス2 4 5 ...........>番号

したがって、uを見ると、この配列のサイズは3ですが、配列は0番目のインデックスで始まるため、配列のインデックスは最大2です。

配列の長さが3であるため、2番目のステートメントの出力は3になります。インデックス値と配列の長さを混同しないでください。

乾杯!


2
  int arr[]={4,7,2,21321,657,12321};
  int length =arr.length;
  System.out.println(length); // will return 6

  int arr2[] = new int[10];
   arr2[3] = 4;
  int length2 =arr2.length;
  System.out.println(length2); // // will return 10. all other digits will be 0 initialize because staic memory initialization

1

配列を宣言したときに配列を初期化したとおりに、配列の実際のサイズが含まれます。Javaには、配列の「論理」サイズという概念はありません。ただし、デフォルト値の0は、手動で設定した値と同じくらい論理的です。


1

これには、割り当てられたサイズ10が含まれます。残りのインデックスには、デフォルト値である0が含まれます。


1

配列の論理サイズが必要な場合は、配列内のすべての値を走査して、それらをゼロに対してチェックできます。値がゼロではなく、それが論理サイズの場合は、値を増やします。配列のサイズは固定されているため、組み込みのメソッドはありません。コレクションを確認する必要があるかもしれません。


これは単なる「0は有効な値ではないと想定しています」サイズであり、これが役立つかどうかは疑わしいものです。
トム・

私は配列の長さを取得するアイデアを思いついたばかりです(0は無効です)。私が言ったように、より正確なデータ操作のためにコレクションを使用できます。
Struse、2016年

1

そのはず:

int a = arr.length;

括弧は避けてください。


5
スタックオーバーフローへようこそ!これは1年以上前の質問であり、すでに6つの他の回答があるので、これよりも長い回答を期待します。さらに、あなたは質問の要点に答えているのではなく、回答(質問に答える)質問のコメントですでに対象となっているタイプミスを修正するだけです。
John Dvorak

0

Java配列は実際にはサイズが固定されており、他の回答は、.lengthが実際に期待どおりに動作していないことを説明しています。私はあなたがあなたが使用したいかもしれないものを考えると、それを追加したいと思います、それは成長したり縮小したりできる配列であるArrayListです:

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

ここで.size()メソッドは、リスト内の要素の数を表示し、追加するときにこれを増やすことができます。


0

「論理サイズ」、つまり配列のインデックスを意味する場合は、単純にint arrayLength = arr.length-1; 配列のインデックスは「0」で始まるため、論理または「配列のインデックス」は常に実際のサイズより「1」だけ小さくなります。


0

配列はJavaでコンパイル時にメモリが割り当てられるため、静的であり、明示的に設定または変更されていない要素にはデフォルト値が設定されます。このようなコードを使用することもできますが、デフォルト値をカウントしないためお勧めできません。明示的に初期化しても、バグが発生する可能性があります。他の人が言ったように、実際のサイズを探すときは、「。length()」の代わりに「.length」を使用する必要があります。

public int logicalArrayLength(type[] passedArray) {
    int count = 0;
    for (int i = 0; i < passedArray.length; i++) {
        if (passedArray[i] != defaultValue) {
            count++;
        }
    }
    return count;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.