为什么 Java 允许大小为 0 的数组?

2022-08-31 11:34:38

Java中的数组长度是固定的。那么,为什么 Java 允许大小为 0 的数组呢?

String[] strings = new String[0];

答案 1

它表示它是空的。也就是说,您可以循环访问它,就好像它有项目并且没有结果发生一样:

for(int k = 0; k < strings.length; k++){
   // something
}

从而避免了检查的需要。如果所讨论的数组是 ,则会发生异常,但在这种情况下,它不执行任何操作,这可能是合适的。null


答案 2

为什么 Java 允许大小为 1 的数组?将单个值包装在数组中不是很有用吗?如果Java只允许大小为2或更大的数组,那不是就足够了吗?

是的,我们可以传递而不是空数组和单个对象或基元而不是大小为一的矩阵。null

但是有一些很好的理由反对这种限制。我个人的顶级论点:

限制太复杂,没有必要

将数组限制为大小 [1..INTEGER.MAX_INT]我们必须在代码中添加许多额外的boudary检查,(同意Konrads的评论)转换逻辑和方法重载。从允许的数组大小中排除 0(可能为 1)不会节省成本,需要额外的工作,并且会对性能产生负面影响。

数组模型矢量

数组是向量的良好数据模型(数学,而不是类!当然,数学中的向量可能是零维的。这在概念上不同于不存在。Vector


Sidenote - (char-)数组的突出包装器是类。不可变实现了空数组的概念:它是空字符串 ()。StringString""