java中如何知道数组中实际的元素个数

我声明一个数组,array[20],然后我向其中放入对象信息,但是只放了10个对象信息,怎样知道这个数组中有10个元素? 代码?

java中知道数组中实际的元素个数的方法:

 å®šä¹‰ä¸€ä¸ªå˜é‡ä¿å­˜æ•°ç»„中的元素个数,然后对数组进行遍历,当数组元素不为空时,变量的值+1,否则不改变。

代码为:

int n = 0;  //保存元素个数的变量
for(int i = 0; i < array.length; i++)
{
if(null != array[i]) n++;
}
System.out.println(n);
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-11-23
java原生数组的话,除了遍历以外不能做到。
因为,数组实际上是内存中的一段逻辑上的连续空间,比如int[] numbers = new int[5],是相当于有5个int在内存中“一字排开”。不管是否对其进行赋值,他们所在的那一段内存空间中都是有值的。如果你认为,对numbers[0] = 1, numbers[1] = 2这样赋值之后,赋过值的和没赋过值的在存储上有什么不同,认为没赋过值的部分是null一类的东西,从而可以快速找到有哪些元素是被赋值过的话,那就错了。
对于元素是引用变量类型的数组同理。假如我们进行 Object[] objs = new Object[4]; objs[0] = new Date(); 的操作,虽然确实objs[0]指向的对象不是null,而objs[1], objs[2],objs[3]都是指向了null对象,但实际上对于这些引用变量,他们在内存中所占的空间都是相同的,因此只有访问到这个变量并且去查看它指向的对象,才能知道它是否被赋过值,也就是必须要遍历才能统计。
如果想不遍历就知道数组中哪些是被赋过值的,哪些是初始化后没动过的,需要自己定义一个数据结构,维护数组的同时记录下其中的哪些位置被操作过,类似这样的:
public class ExpandArray{
public Object[] data;

public String index;

//每个操作都需要更新index,index可以是一个"00000001"这样的字符串,用1表示数组中这个位置被操作过,0表示是只进行过初始化过的

}
第2个回答  2012-05-12
写一个遍历数组的方法,用里面的.class方法判断是否为你定义的类型,是就在标记为加一,否则不变,最后查看标记为数据就可以了
第3个回答  推荐于2017-09-14
int n = 0;
for(int i = 0; i < array.length; i++)
{
if(null != array[i]) n++;
}
System.out.println(n);本回答被提问者采纳
第4个回答  2012-05-12
你定义一个int i=0;没加入一个对象信息i++;不就能知道了么
相似回答