Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 零长度数组_Java - Fatal编程技术网

Java 零长度数组

Java 零长度数组,java,Java,可能重复: 零长度数组的用途是什么?它们是否有任何用途,或者仅仅是因为语法允许 如果您有一个接受数组的函数,并且您想给它一个不包含任何内容的数组,那么您将传递一个零长度数组 如果从外部源读取数组,而该数组恰好没有任何项,则将得到一个零长度数组。没有方法、成员或行为的对象的用途是什么?数组只是指向连续内存块的指针,因此0是有效长度 没有理由不允许使用零长度数组,并且支持零长度数组可以避免在许多情况下使用特殊情况 例如:如果一个方法定义如下,编译器应该向varArg传递什么: public voi

可能重复:


零长度数组的用途是什么?它们是否有任何用途,或者仅仅是因为语法允许

如果您有一个接受数组的函数,并且您想给它一个不包含任何内容的数组,那么您将传递一个零长度数组


如果从外部源读取数组,而该数组恰好没有任何项,则将得到一个零长度数组。

没有方法、成员或行为的对象的用途是什么?数组只是指向连续内存块的指针,因此0是有效长度

没有理由不允许使用零长度数组,并且支持零长度数组可以避免在许多情况下使用特殊情况

例如:如果一个方法定义如下,编译器应该向
varArg
传递什么:

public void foo(String arg1, String... varArg);
foo("bar");
这就是所谓的:

public void foo(String arg1, String... varArg);
foo("bar");
另外,
”.toByteArray(“UTF-8”)
的返回值应该是什么


禁止使用零长度数组会使语言变得相当复杂,但不会增加多少优势。

如果前提条件是数组始终存在,则可以避免检查null。

它们允许您在避免空值的同时保持API的一致性。例如,假设您有一个返回某物数组的方法。如果没有有效结果,则返回一个零长度数组。相反,如果您被迫返回null来表示这一点,那么客户端代码将不得不以不同的方式处理这两种情况。对于零长度数组,以下代码仍然有效:

for (int i = 0; i < array.length; i++) {
   // do something with the array entries
}
for(int i=0;i

如果array.length==0,则永远不会输入循环体。

假设您是指在Java中,您可以在零长度数组上进行迭代,没有任何问题,但如果变量设置为
null
,则无法执行此操作

String[] myArr = new String[0];
for (String str : myArr) {
  // do something here
}

如果您将
myArr
设置为
null
,您将在该循环中得到
NullPointerException

使用这种方法意味着需要的空检查要少得多注意:由于零长度数组是不可变的,它们对于给定类型都是相等的,例如,您通常可以对
int[0]
使用常量零。唯一的例外是,如果使用零长度数组作为锁,但这不是一个好主意。