Java中的数组长度

时间:2012-01-06 09:33:12

标签: java arrays

我声明了一个如下所示的数组:

int[] arr = new int[10];

然后我将以下值分配给数组:

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

然后我声明并初始化了一个整数变量:

int arrayLength = arr.length;

这对于查找实际大小很有用,但有没有找到数组逻辑大小的方法?

16 个答案:

答案 0 :(得分:76)

它包含分配的大小10。未分配的索引将包含0的默认值int

答案 1 :(得分:60)

首先,length是一个属性,因此它是arr.length而不是arr.length()

它将返回10,声明的大小。未明确声明的元素将使用0初始化。

答案 2 :(得分:21)

要查找数组A的长度,您应该使用length属性。它是A.length,不要使用A.length(),它主要用于字符串相关对象的大小。

enter image description here

length属性将始终显示初始化期间阵列的总分配空间。

如果你遇到任何这类问题,最简单的方法就是运行它。快乐编程!

答案 3 :(得分:6)

数组是静态内存分配,所以如果你初始化一个整数数组:

int[] intArray = new int[15];

无论填充多少索引,长度都始终 15。

另外,当你初始化一个整数数组时,所有的索引都将填充“0”。

答案 4 :(得分:5)

在这种情况下,arr.length将返回10,即您分配的数组的大小。逻辑大小在这里并不适用,因为这是一个固定长度的数组。

初始化数组时:

int[] arr = new int[10];

Java将创建一个包含10个元素的数组,并将所有这些元素初始化为0.有关此基本类型和其他基本类型的初始值的详细信息,请参阅Java language spec

答案 5 :(得分:4)

在Java中,您的“实际”和“逻辑”大小是相同的。运行时在分配时使用默认值填充所有数组插槽。因此,您的a包含10.

答案 6 :(得分:3)

`

  

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

所以这里我们创建了一个内存空间为3的数组... 这就是它实际上的样子

0th 1st 2nd ...........>指数 2 4 5 ...........>编号

因为你看到这个数组的大小是3但是数组的索引最多只有2,因为任何数组都以第0个索引开头。

第二个语句'输出应该是3,因为数组的长度是3 ...请不要混淆索引值和数组的长度....

喝彩!

答案 7 :(得分:3)

int[] arr = new int[10];

arr是一个int类型的数组,大小为10。它是10个元素的数组。 如果我们不默认初始化数组,则数组元素包含默认值。如果是int数组,则默认值为0

length是适用于数组的属性。
这里arr.length将给出10

答案 8 :(得分:1)

它将包含数组的实际大小,因为这是您在声明数组时初始化数组的内容。 Java没有关于数组“逻辑”大小的概念,只要它关注的是默认值0与您手动设置的值一样合理。

答案 9 :(得分:1)

应该是:

int a = arr.length;

应避免使用括号。

答案 10 :(得分:1)

它包含已分配的大小,10。其余索引将包含默认值0。

答案 11 :(得分:1)

如果你想要数组的逻辑大小,你可以遍历数组中的所有值并检查它们是否为零。如果值不为零,则增加值,这将是逻辑大小。因为数组大小是固定的,所以你没有任何内置的方法,可能你应该看看集合。

答案 12 :(得分:1)

  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

答案 13 :(得分:0)

Java数组的大小实际上是固定的,其他答案则说明.length并没有真正发挥您的期望。我只是想补充一下,鉴于您的问题,您可能想使用的是一个ArrayList,该数组可以增长和收缩:

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

.size()方法将向您显示列表中元素的数量,您可以在添加内容时增加它。

答案 14 :(得分:0)

如果用“逻辑大小”表示数组的索引,则只需     int arrayLength = arr.length-1; 由于数组索引以“ 0”开头,因此逻辑或“数组索引”将始终比实际大小小“ 1”。

答案 15 :(得分: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;
}