首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Java允许大小为0的数组?

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

Stack Overflow用户
提问于 2011-01-06 14:40:39
回答 8查看 87.5K关注 0票数 86

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

代码语言:javascript
复制
String[] strings = new String[0];
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-01-06 14:45:04

它表示它是空的。也就是说,你可以循环遍历它,就像它有项一样,没有结果发生:

代码语言:javascript
复制
for(int k = 0; k < strings.length; k++){
   // something
}

从而避免了检查的需要。如果有问题的数组是null,则会发生异常,但在这种情况下,它什么也不做,这可能是合适的。

票数 127
EN

Stack Overflow用户

发布于 2011-01-06 14:44:48

有时返回一个零大小的数组比返回null要友好得多。

票数 27
EN

Stack Overflow用户

发布于 2011-01-06 15:11:00

考虑一下这个(Noon回答的更详细的解释):

代码语言:javascript
复制
public String[] getStrings() {
 if( foo ) {
  return null;
 } else {
  return new String[] {"bar, "baz"};
 }
}

String[] strings = getStrings();
if (strings != null) {
 for (String s : strings) {
  blah(s);
 }
}

现在将其与以下内容进行比较:

代码语言:javascript
复制
public String[] getStrings() {
 if( foo ) {
  return new String[0];
 } else {
  return new String[] {"bar, "baz"};
 }
}

// the if block is not necessary anymore
String[] strings = getStrings();
for (String s : strings) {
 blah(s);
}

这(返回空数组而不是null值)实际上是Java API设计界的最佳实践。

此外,在Java语言中,您可以将列表(例如ArrayList)转换为数组,并且只有将空列表转换为空数组才有意义。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4612471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档