零长度数组
回答
如果你有一个函数接受一个数组,并且你想给它一个没有任何东西的数组,你传递一个零长度的数组。
如果您从外部源读取数组,并且它恰好没有任何项目,您将得到一个零长度数组。
使用这种方法意味着需要更少的空检查 – tofarr 2011-03-23 13:14:29
没有方法,成员或行为的对象的目的是什么?数组只是指向连续的内存块的指针,所以0是有效的长度。
没有理由不允许零长度数组和支持它们避免特殊情况下的许多事情。
例如:如果定义应编译器传递给varArg
什么方法是这样的:
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
}
如果array.length == 0,则循环的主体永远不会输入。
假设你的意思是在Java中,你可以在没有任何问题的情况下迭代零长度的数组,但是如果变量设置为null
,你就不能这样做。
String[] myArr = new String[0];
for (String str : myArr) {
// do something here
}
如果设置myArr
到null
相反,你会得到在这个循环中的NullPointerException
。
- 1. 零长度数组
- 2. ng-show当数组长度为零时
- 3. std :: decay一个零长度数组
- 4. 零长度数组结构填充
- 5. jQuery中的数组长度为零
- 6. R - 参数长度为零
- 7. 参数的长度为零
- 8. 如何告诉gdb我的零长度数组有多长?
- 9. KML编组产生零长度文件
- 10. 数组长度
- 11. `长度'为零:NilClass
- 12. VBA:创建一个长度等于选择长度的零的数组
- 13. JSON数组长度returing串长度
- 14. php mt_rand生成所有长度为零的x长度数字
- 15. 数组长度Matlab
- 16. 数组长度 - 环
- 17. 数组长度空
- 18. 由数组长度
- 19. 从CIImage的UIImage - 数据长度为零?
- 20. R nzchar错误:参数长度为零
- 21. NSURLConnection返回零长度数据
- 22. AS3:从XML解析的对象数组保持为零长度
- 23. 结构中的零长度数组如何有用?
- 24. 将可变长度数组初始化为零
- 25. 为什么零长度数组只允许分配堆?
- 26. 可变数组成员(零长度阵列)
- 27. 观察到数组的长度总是零
- 28. 如何创建任意长度的零填充JavaScript数组?
- 29. 结构中长度为零的数组的目的是什么?
- 30. C++用零和空值检查数组的长度
注意:由于零长度数组是不可变的,所以它们对于给定类型都是相等的,例如对于'int [0]',通常可以使用一个常数零。唯一的例外是,如果你已经使用零长度数组作为锁,但这是不好的主意恕我直言。 – 2011-03-23 13:55:09