Java中的数组长度


101

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

int[] arr = new int[10];

然后,我为数组分配了以下值:

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

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

int arrayLength = arr.length;

这对于查找实际大小很有用,但是有什么方法可以找到数组的逻辑大小吗?

Answers:



71

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

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


无法在long类型的数组上调用length()[] Java(67108980)
Alessandro Ornano,

22

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

在此处输入图片说明

length属性将始终显示初始化期间为数组分配的总空间。

如果您遇到任何此类问题,那么简单的方法就是运行它。编程愉快!


6

数组是静态内存分配,因此,如果您初始化整数数组:

int[] intArray = new int[15];

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

另外,初始化整数数组时,所有索引都将填充为“ 0”。


5

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


5

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

初始化数组时:

int[] arr = new int[10];

Java将创建一个包含10个元素的数组,并将所有这些元素初始化为0。有关此类型和其他原始类型的初始值的详细信息,请参见Java语言规范


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

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

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


3

`

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

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

0th 1st 2nd ...........>索引2 4 5 .....> Number

因此,如您所见,此数组的大小为3,但数组的索引最多为2,因为任何数组均从第0个索引开始。

第二条语句的输出应为3,因为数组的长度为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

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


这只是“我认为0不是有效值”的大小,如果有帮助的话,则值得怀疑。
汤姆(Tom)

我只是想出一个获取数组长度的想法(0无效)。正如我所说,您可以使用集合进行更精确的数据操作。
Struse

1

它应该是:

int a = arr.length;

应该避免括号。


5
欢迎堆栈溢出!既然这个问题已经存在了一年多,并且已经有其他六个答案,那么我希望得到一个比这更长的答案。此外,您不是在回答问题的要点,而只是在答案(回答问题)问题注释中修正了目标错误。
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;
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.