我声明了一个如下所示的数组:
int[] arr = new int[10];
然后我将以下值分配给数组:
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
然后我声明并初始化了一个整数变量:
int arrayLength = arr.length;
这对于查找实际大小很有用,但有没有找到数组逻辑大小的方法?
答案 0 :(得分:76)
它包含分配的大小10
。未分配的索引将包含0
的默认值int
。
答案 1 :(得分:60)
首先,length
是一个属性,因此它是arr.length
而不是arr.length()
。
它将返回10,声明的大小。未明确声明的元素将使用0初始化。
答案 2 :(得分:21)
要查找数组A
的长度,您应该使用length
属性。它是A.length
,不要使用A.length()
,它主要用于字符串相关对象的大小。
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;
}