【问题标题】:Semantics of returning arrays返回数组的语义
【发布时间】:2017-04-18 12:16:22
【问题描述】:

当我创建一个方法来确定我想要返回什么值时,通常我可以直接返回一个值——就像这样:

return 0;

但是,我发现在返回数组时,我必须创建一个数组的新实例,然后返回它——就像这样:

String[] rtnArr = {"str1", "str2"}; return rtnArr;

这是为什么?我是在这里创建两个数组,还是只在实例化方法时指定一个类型?

编辑:我应该澄清一下,我是根据初步条件返回一个或另一个数组。也就是说,我有一个开关,每个case返回一个不同字符串的数组。

【问题讨论】:

  • 这取决于您如何获取或构建数组中的数据。有时您确实构建了一个新数组;其他时候,您可以从集合中导出它。您是如何构建这些数据的?

标签: java arrays oop


【解决方案1】:

您没有创建两个数组。数组初始化器仅在初始化变量时允许使用,因此您不能直接在 return 语句中使用它们。

【讨论】:

    【解决方案2】:

    您实际上并不需要一个变量来返回一个数组。你也可以像这样返回一个数组

    return new String[] {"Hello", "World"};
    

    当您声明一个数组时,您可以将其初始化为String test[] = {"Hello", "World"};,因为该数组显然是一个字符串数组,因此您不需要执行new String[] {"Hello", "World"},但除此之外,您需要使用类型显式初始化数组为了类型安全。

    【讨论】:

      【解决方案3】:

      我发现在返回数组时,我必须创建一个数组的新实例,并返回它为什么会这样?我是在这里创建两个数组,还是只指定一个 在我实例化方法时输入?

      你不需要总是return一个新的数组实例,有时你可能需要return一个现有的数组对象,如下面的代码所示:

      public class MyArrayTest {
      
           private String[] myArray;
      
           public MyArrayTest(String[] myArray) {
               this.myArray = myArray;
           }
      
           public String[] getMyArray() {
               return myArray;//returning existing array object
           }
      }
      

      【讨论】:

        猜你喜欢
        • 2014-09-14
        • 2022-06-17
        • 2019-10-30
        • 2019-07-30
        • 1970-01-01
        • 2021-07-07
        • 2013-01-25
        • 1970-01-01
        • 2012-10-07
        相关资源
        最近更新 更多