【发布时间】: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?
【问题讨论】:
假设我初始化一个数组有点像这样:
int[] anArray = {
100, 200, 300,
400, 500, 600,
700, 800, 900, 1000
};
是否保证元素总是按照我在初始化时输入的顺序插入?例如:100,200,300,400,500,600,700,...,1000?
【问题讨论】:
是的,规范保证了这一点(请参阅JLS 10.6):
变量初始值设定项立即用大括号括起来 然后在文本中从左到右执行数组初始值设定项 它们在源代码中出现的顺序。第 n 个变量初始化器 指定第 n-1 个数组组件的值。
【讨论】:
简短回答:是的,如果你这样初始化它,它们将按照初始化的顺序排列。
请参阅 JLS:
然后,由数组初始化程序的大括号括起来的变量初始化程序按照它们在源代码中出现的文本顺序从左到右执行。第 n 个变量初始化器指定第 n-1 个数组组件的值
https://docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.6
【讨论】:
是否保证元素始终按照我在初始化时键入的顺序插入?
是的
【讨论】:
您发布的代码与此相同:
int[] anArray = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 };
这样做的目的是创建integers 的array,其中 100 位于位置 0、200 到位置 1、300 到位置 2、400 到位置 3,等等。
这对每个数组每次都是一样的!
【讨论】:
是的,如果数组改变了值的位置,那么现代的大多数程序都将无法工作。
【讨论】: