gpt4 book ai didi

java - 数组的有效大小与实际大小,如何知道有效大小?

转载 作者:行者123 更新时间:2023-11-30 07:05:07 26 4
gpt4 key购买 nike

我想问同样问题的另一种方式是如何知道数组中空指针元素的数量?

int[] arrayOfEffectiveSizeTen = new int[10];
// some black box in which the content of the array is changed
calculateAverage(arrayOfEffectiveSizeTen) //how can you do this for instance?

你真的必须在 for 中做这样的事情吗?用 i < arrayOfEffectiveSizeTen.length 循环?

arrayOfEffectiveSizeTen[i] == null ? nullPointingElement++ : elementInArray++;

我找不到任何重复的问题。我觉得很奇怪。在我的特殊情况下,它是关于 Java 的。

最佳答案

在 Java 中,您必须区分原始类型和引用类型。

当用 new <sometype>[size] 初始化数组时, 它的所有元素都设置为默认值。对于 int , long , byte等等,值为 0。所以你可以在这样的数组上运行平均函数,你将得到 0 的平均值。

如果类型是boolean,初始值为false .

如果类型是任何对象类型(类),包括众所周知的类型如String , Integer等,默认值都是空值。

所以基本上,当你创建一个数组时,如果它是原始类型,那么根据你的定义,你可以说它的长度就是它的“有效大小”,因为 0false是合法的值。

如果它是引用类型,那么当您创建它时,根据您的定义,它的有效大小为零,因为没有非空元素。

但是,使用 new不是初始化数组的唯一方法。例如,您可以使用类似的东西:

Integer[] intObjects = { 5, 17, 32 };

请注意,这是一个类型为 Integer 的数组, 这是一个引用类型,而不是 int , 原始类型。如果你用 new Integer[3] 初始化它你会得到所有的空值。但是当你像我展示的那样初始化它时,它包含对三个 Integer 的引用。分别包含数字 5、17 和 32 的对象。所以你可以说它的有效大小等于它的长度。

但是请注意,这样写也是合法的:

Integer[] intObjects = { 5, null, 32 };

考虑到所有这些,“我如何知道数组中有多少空值”这个问题的答案是:

  1. 如果数组是原始类型,则没有空值。它包含合法值,即使它们是零/假。
  2. 如果数组是引用类型,并且你用new 初始化了它, 那么它的所有元素都是空的。
  3. 如果数组是引用类型,并且你用{...} 初始化了它,或自初始化以来分配的值,您无法知道其中有多少空值,除非通过循环和计数。

关于java - 数组的有效大小与实际大小,如何知道有效大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27087229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com