如何在 Java 中初始化长度为 0 的字符串数组?

Posted

技术标签:

【中文标题】如何在 Java 中初始化长度为 0 的字符串数组?【英文标题】:How can I initialize a String array with length 0 in Java? 【发布时间】:2010-12-12 13:22:41 【问题描述】:

该方法的 Java 文档String[] java.io.File.list(FilenameFilter filter) 在退货说明中包含此内容:

如果目录为空或过滤器不接受任何名称,则数组将为空。

我该如何做类似的事情并将字符串数组(或任何其他数组)初始化为长度为 0?

【问题讨论】:

我刚刚意识到这是一个愚蠢的问题 :( 因为这些数组的初始化方式与任何其他数组的初始化方式完全相同,只是大小为 0。显示了我现在初始化数组的频率。我会离开问题(不是删除它)因为有一天其他人可能和我一样愚蠢:) 我对长度为 0 的数组有什么用例以及在这种特殊情况下为什么不简单地初始化到 null 感到困惑。 【参考方案1】:

正如其他人所说,

new String[0]

确实会创建一个空数组。然而,数组有一个好处——它们的大小不能改变,所以你总是可以使用相同的空数组引用。所以在你的代码中,你可以使用:

private static final String[] EMPTY_ARRAY = new String[0];

然后在每次需要时返回 EMPTY_ARRAY - 无需每次都创建新对象。

【讨论】:

看来大家都喜欢打字:private static final String[] EMPTY_ARRAY = ; @Thomas:我同意你的观点,但对于这种特殊情况,我更喜欢更明确的形式。对我来说更清楚的是,它的意思是“我想要一个包含 0 个元素的字符串数组”,而不是“我想要一个包含这个内容的数组——它是空的”。我猜只是个人喜好。 @Tony - 我必须使用 Java 可以推断类型的少数几个地方。 :-) @delive:我提供的示例仍然会创建一个空数组,但是因为它是空的,所以您不能使用EMPTY_ARRAY[0] - 这是试图访问不存在的元素 0 ... @theyuv:最终这并不重要。如果您只在一个地方需要它,请在该类中声明它。如果您发现在更多地方需要它,您可以随时将其移至“实用程序”类。【参考方案2】:

String[] str = new String[0];?

【讨论】:

【参考方案3】:
String[] str = ;

但是

return ;

由于缺少类型信息而无法使用。

【讨论】:

return new String[] ;return new String[0]; 都可以。【参考方案4】:

好的,我实际上找到了答案,但我认为无论如何我都会将问题“导入”到 SO 中

String[] files = new String[0];int[] files = new int[0];

【讨论】:

在您的问题中添加此类评论...或选择其中一个具有相同含义的答案。 感谢乔纳森的评论。正如您可能已经注意到的那样,我在其他人之前发布了这个答案(因此没有答案可供选择)。我也看不出将答案添加到问题中会产生更好的问题。 @Ron Tuffin -> 2009 年 11 月 3 日 7:49:10Z 提问 -> 2009 年 11 月 3 日 7:49:57Z 回答了您甚至没有花一分钟时间回答自己的问题题?真的吗? :)【参考方案5】:

您可以使用 org.apache.commons.lang3 中的 ArrayUtils.EMPTY_STRING_ARRAY

import org.apache.commons.lang3.ArrayUtils;

    class Scratch 
        public static void main(String[] args) 
            String[] strings = ArrayUtils.EMPTY_STRING_ARRAY;
        
    

【讨论】:

【参考方案6】:

创建一个不会返回 null 的函数,而是返回一个空数组,您可以通过下面的代码来理解。

    public static String[] getJavaFileNameList(File inputDir) 
    String[] files = inputDir.list(new FilenameFilter() 
        @Override
        public boolean accept(File current, String name) 
            return new File(current, name).isFile() && (name.endsWith("java"));
        
    );

    return files == null ? new String[0] : files;

【讨论】:

【参考方案7】:

你可以使用以下东西-

1. String[] str = new String[0];
2. String[] str = ArrayUtils.EMPTY_STRING_ARRAY;<br>

两者都是一样的。

【讨论】:

以上是关于如何在 Java 中初始化长度为 0 的字符串数组?的主要内容,如果未能解决你的问题,请参考以下文章

java的字符型数组补零

如何找出数组中出现次数超过长度一半的元素

java中怎么把字符串转化为字符串数组?

java中如何计算一个字符串的byte长度(一个汉字多少字符)

java中的数组

请输入一个长度介于0-5之间的字符串?