【问题标题】:Does an initialized Array retain its order?初始化的 Array 是否保留其顺序?
【发布时间】:2016-04-16 10:55:26
【问题描述】:

假设我初始化一个数组有点像这样:

int[] anArray = { 
    100, 200, 300,
    400, 500, 600, 
    700, 800, 900, 1000
};

是否保证元素总是按照我在初始化时输入的顺序插入?例如:100,200,300,400,500,600,700,...,1000?

【问题讨论】:

    标签: java arrays sorting


    【解决方案1】:

    是的,规范保证了这一点(请参阅JLS 10.6):

    变量初始值设定项立即用大括号括起来 然后在文本中从左到右执行数组初始值设定项 它们在源代码中出现的顺序。第 n 个变量初始化器 指定第 n-1 个数组组件的值。

    【讨论】:

    • 好!我在文档中寻找类似的东西,猜我确实看错了页面。非常感谢!
    【解决方案2】:

    简短回答:是的,如果你这样初始化它,它们将按照初始化的顺序排列。

    请参阅 JLS:

    然后,由数组初始化程序的大括号括起来的变量初始化程序按照它们在源代码中出现的文本顺序从左到右执行。第 n 个变量初始化器指定第 n-1 个数组组件的值

    https://docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.6

    【讨论】:

      【解决方案3】:

      是否保证元素始终按照我在初始化时键入的顺序插入?

      是的

      【讨论】:

        【解决方案4】:

        是的!

        您发布的代码与此相同:

        int[] anArray = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 };
        

        这样做的目的是创建integersarray,其中 100 位于位置 0、200 到位置 1、300 到位置 2、400 到位置 3,等等。

        这对每个数组每次都是一样的!

        【讨论】:

          【解决方案5】:

          是的,如果数组改变了值的位置,那么现代的大多数程序都将无法工作。

          【讨论】:

          • OP 询问的是初始化顺序而不是“位置”
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-01
          • 1970-01-01
          • 2010-12-17
          • 1970-01-01
          • 2014-10-18
          相关资源
          最近更新 更多